DDL 数据库定义语言
用来定义数据库对象:库,表,列等
CREATE ALTER DROP
DML 数据库操作语言
用来定义数据库语言
insert update delate
DCL 数据库控制语言
用来定义访问权限和安全级别
DQL 数据库查询语言
用来查询记录
SELECT
注意sql语句要以 ;结尾
sql语句
1 DDL操作数据库对象:库,表,列等
关键字 CREATE ALTER DROP
1.1.1 创建
CREATE DATABASE mydb1;
创建并设置编码
CREATE DATABASE mydb2 CHARACTER SET gbk;
1.1.2 查询
SHOW DATABASES ;
1.1.3 删除
DROP DATABASE mydb2;
1.1.4修改
查看数据库 并把字符集修改为utf8
ALTER DATABASE mydb1 CHARACTER SET utf8;
1.1.5 其他
查看当前正在使用的数据库
SELECT database();
切换数据库
USE mydb1;
1.2操作数据表
创建表
语法:
creaat table 表名 (
字段1 字段类型
字段2 字段类型
…
字段n 字段类型
)
常用的字段类型:
int 整型
double 浮点 如double (5,2) 表示最多5位 其中最多两位小数
即 最大值999.99
char 固定长度字符串类型 如char(10) 对应值’abc
varchar 可变字符串类型 如 vaichar(10) 对应值’abc’
text 字符串类型
blob 字节类型
date 日期类型 格式yyyy-MM-dd
time 时间类型 格式:hh:mm:ss
timestamp 时间戳类型 格式 yyyy-MM-dd hh:mm:ss 会自动赋值
datatime 日期时间类型 格式 yyyy-MM-dd hh:mm:ss
CREATE TABLE student(
name VARCHAR(10),
age INT,
score DOUBLE
);
查询数据库中的表
SHOW TABLES ;
查询表中的字段信息
DESC student;
在表中增加一列
ALTER TABLE student ADD num INT;
修改num列类型为double
ALTER TABLE student MODIFY num INT;
删除num列.一次只能删除一类
ALTER TABLE student DROP num;
修改表名
RENAME TABLE student to stu;
查看表格的创建细节
SHOW CREATE TABLE stu;
修改表格的字符集
ALTER TABLE stu CHARACTER SET gbk;
修改列名
ALTER TABLE stu CHANGE name username VARCHAR(10);
删除表
DROP TABLE stu;
2,DML(重要)
对表中的数据进行增删改操作
INSERT UODATE DELATE
(查询表中的所有数据
select *from 表名;)
2.1 插入
DESC stu;
SELECT *FROM stu;
INSERT INTO 表名(列名1,列名2,列名3…)
values (列值1,….)
注意 列名与列值得类型和个数顺序要一致
若不知道内容 可插入空值 null
若要插入日期等信息 也要引号括起来
ALTER TABLE stu ADD birthday DATE;
INSERT INTO stu(username,age,score,birthday)
VALUES (‘TOM’,11,55.5,’2002-02-10’);
ALTER TABLE stu ADD birthday
#批量插入
INSERT INTO stu VALUES
('sokeaa',11,NULL ,'1993-05-20') ,
('bikebbc',12,50,'1993-05-20') ,
('jarycccc',13,55.5,'1993-05-20' ) ;
# 2.2 修改
语法:
update 表名 set 要做的具体修改操作 where(可选) 列名= 值;
所有的值都改为50;
UPDATE stu SET age = 50;
SELECT *FROM stu;
#将tom1 的改为100
UPDATE stu SET score = 100 WHERE username =’TOM1’ ;
SELECT *FROM stu;
将名字tom2的人分数改为99.9,年龄改为10
UPDATE stu SET score=99 WHERE username =’tom2’;
DESC stu;
将名字叫 ‘tom3’的人分数增加10分
UPDATE stu SET score= score +10 WHERE username = ‘TOM3’;
SELECT *FROM stu;
#2.3 删除
delete from 表名(where 列名 = 值);
# 删除所有数据
DELETE FROM stu;
删除所有年龄为10的
DELETE FROM stu WHERE age=10;
删除表中的记录
与delate方式的区别:
delate删除的是数据,但表中的结构还在
TRUNCATE 是直接把表删掉 在创建一个同样的表
速度快 但数据不能找回
TRUNCATE TABLE stu;
3.DQL
数据查询语言(重要)
关键字 select
语法 select 列名 from表名
(where 行条件)…
group by (对结果分组)..
having (分组后的行条件)..
order by(排序)..)
3.1 查询所有
3.1.1 查询所有
SELECT * FROM stu;
3.1.2 查询指定列
SELECT username ,age FROM stu;
3.2 条件查询
条件查询就是在查询时给出where字句 在where子句中可以使用如下运算符和关键字
:
= != <> < <= > >=
between … and
in (set)
is null is not null
and
or
not
查询年龄为50 名字为’tom1’的信息
SELECT *FROM stu WHERE age=11 AND username = ‘TOM1’;
查询年龄为55.5 或者名字为’tom1’的信息
SELECT *FROM stu WHERE score = 55.5 OR username=’TOM1’;
查询分数为55.5,99.9和158的学生的信息
SELECT *FROM stu WHERE score = 55.5 OR score = 99.9OR score = 158 ;
SELECT *FROM stu WHERE score IN (55.5,99.9,158);
查询分数不是55.5,99.9和158的信息
SELECT *FROM stu WHERE score != 55.5 AND score != 99.9AND score != 158 ;
SELECT *FROM stu WHERE score NOT IN (55.5,99.9,158);
查询分数为null的记录
SELECT * FROM stu WHERE birthday IS NULL ;
查询分数不为null的记录
SELECT *from stu WHERE score IS NOT NULL ;
查询分数在70 到90 的人
SELECT score FROM stu WHERE score>=70 AND score<=90;
SELECT score FROM stu WHERE score BETWEEN 70 AND 90;
查询年龄不是22岁的记录
SELECT *FROM stu WHERE age !=22;
SELECT *FROM stu WHERE NOT age=22;
SELECT *FROM stu WHERE age <> 22;
查询生日不为空的学生的信息
SELECT * FROM stu WHERE birthday IS NOT NULL ;