美文网首页
MySQL的使用(3)

MySQL的使用(3)

作者: mnjnhuang | 来源:发表于2018-11-17 11:34 被阅读0次

SQL语句

SQL:结构化查询语言 专门用来和关系型数据库进行通信的语言

SQL语句的功能:

增删改查

SQL语句的分类:

DML Data Manipulation Language 数据库操纵语言
INSERT 插入数据
DELETE 删除数据
UPDATE 更新数据
DDL Data Definition Language 数据库定义语言
数据库、表、索引、存储过程、函数
CREATE 创建
DROP 删除
ALTER 修改
DCL Data Control Language 数据库控制语言
GRANT 授权
REVOKE 撤销
DQL Data Query Language 数据库查询语言
SELECT 查询

函数

基本函数
> select database(); # 查看当前所在的数据库
> select user();     # 查看当前所登陆的用户
> password('123') ;  # 密码函数,修改密码为123
聚合函数
> select sun(age) from t1;    # 计算age字段的和
> select avt(age) from t1;    # 计算age字段的平均值
> select max(age) from t1;    # 计算age字段的最大值
> select min(age) from t1;    # 计算age字段的最小值
> select count(age) from t1;  # 统计表中age有多少条记录
> select count(*) from pass;  # 统计表中有多少条非空的记录
> select sex,count(sex) from t1 group by sex;  # 统计sex字段每种有多少条记录   
时间函数
> select curtime(); # 查看当前时间
> select curdate(); # 查看当前日期
> select now();     # 查看系统时间
> select sysdate(); # 查看系统时间
转换函数
> select lower(username) from pass; # 将大写转换成小写
> select upper(username) from pass; # 将小写转换成大写

基本SQL语句

库 --> 表 --> 字段 --> 记录

库操作:

> show databases;             # 列出所有的数据库
> create database db1;        # 创建一个名为user的数据库
> show create database db1;   # 查看数据库的属性
> use db1;                    # 切换数据库
> drop database db1;          # 删除名为db1的数据库

表操作:

> show tables;                        # 列出所有表
> create table ta1 (id int(10),name char(10));  # 创建一个表,必要包含至少一个字段
> desc ta1;                           # 列出ta1表所有的字段及属性
> show create table ta1\G             # 查看表ta1的属性    
> alter table ta1 rename to ta2;      # 将表ta1重命名为ta2
> alter table ta2 add sex char(10);   # 给表ta2添加一个字段,位置在最后
> alter table ta2 add QQ int(10) after name;    # 在表ta2 name字段后面添加一个字段
> alter table ta2 add uid int(10) first;        # 在表最上面添加一个字段
> alter table ta2 drop uid;           # 删除表ta2某一字段
> alter table ta2 change id uid int;  # 更改字段id的名称及属性
> alter table ta2 modify uid int(10); # 修改字段uid的属性
> drop table ta2;                     # 删除表ta2

记录操作:

> insert into ta1 set uid=1,name='tom',qq='11111';     # 插入一条记录
> insert into ta1 (uid,name,qq) values (2,'jerry','22222'); # 插入一条记录,键值对
> insert into ta1 (uid,name,qq) values (3,'tom','33333'),(4,'jerry','44444'); # 插入多条记录
> insert into ta1 values (5,'tom','55555');            # 插入一条记录,按照字段的排序
> update ta1 set name='spike' where qq='55555';            # 更新一条记录,需要定位
> update ta1 set name='miky' where qq='44444' && uid=4;    # 更新一条记录,多条件准确定位 and ↔ &&, or ↔ ||, not ↔ !
> delete from ta1 where uid=4;                              # 删除一条记录,必须定位,不定为会删表

单表查询:

> select * from ta2;                             # 查询所有
> select user,host from mysql.user;              # 按条件查询 
> select name,score from ta2 where score >= 60;  # 查询score大于60的记录
> select name,score,sex from ta2 where score>=60 && sex="male";
# 多条件查询,查询score值大于60且sex='male'的值
> select * from ta2 order by score;              # 按数值大小顺序显示
> select * from ta2 order by score desc;         # 逆序显示
> select * from ta2 order by score limit 5;      # 按顺序显示前5行
> select * from ta2 order by score desc limit 5; # 逆序显示前5行
> select * from ta2 where score=(select max(score)from ta2); 
# 子查询,先查询ta2表score最大的值赋予一个变量x,再查询ta2表score=x的一行记录
> select * from ta2 where name like 't%';  
# 通配符匹配:以t开头的所有值  %:所有(贪婪匹配),_:单个字符
> select * from ta2 where name regexp "^t";      # 开启正则匹配
> select count(name) from ta2;                  
# 统计name字段有几条记录,不统计NULL
> select count(1) from ta2;                      # 统计有多少条记录
> select sex,count(sex) from ta2 group by sex;   # #统计指定字段中相同的值的个数

多表查询:

内连接

> select t1.name,t1.sex,t2.score from t1 join t2 on t1.name=t2.name;
# 查询t1表的name,sex,t2表的score,查询条件:t1.name值等于t2.name
> select t1.name,t1.sex,t2.score from t1,t2 where t1.name=t2.name;
# 查询t1表的name,sex,t2表的score,查询条件:t1.name值等于t2.name

外连接

> select * from t1;
+------+-------+
| id   | name  |
+------+-------+
|    1 | tom   |
|    2 | jerry |
|    0 | spike |
|    3 |       |
|    5 | NULL  |
+------+-------+
>select * from t2;
+----+------+
| id | name |
+----+------+
|  1 | tom  |
+----+------+
> select t1.*,t2.* from t1  left join t2 on t1.name=t2.name;       
# 左连接 查询t1t2表所有记录,查询条件:t1.name值等于t2.name,t1表为主表
+------+-------+------+------+
| id   | name  | id   | name |
+------+-------+------+------+
|    1 | tom   |    1 | tom  |
|    2 | jerry | NULL | NULL |
|    0 | spike | NULL | NULL |
|    3 |       | NULL | NULL |
|    5 | NULL  | NULL | NULL |
+------+-------+------+------+

> select t1.*,t2.* from t1 right join t2 on t1.name=t2.name; 
# 右连接 查询t1t2表所有记录,查询条件:t1.name值等于t2.name,t2表为主表
+------+------+----+------+
| id   | name | id | name |
+------+------+----+------+
|    1 | tom  |  1 | tom  |
+------+------+----+------+

相关文章

网友评论

      本文标题:MySQL的使用(3)

      本文链接:https://www.haomeiwen.com/subject/plebfqtx.html