SQL语⾔分为以下⼏种:
1)DDL: (Data Definition Language )如何定义的语⾔ (如何创建数据库,创建表,创建字段等)
2)DML: (数据库操作语⾔) ⼀般指的是(数据新增,修改,删除等)
3)DQL: (查询语⾔,重中之重)(数据的各种查询,你每天都在查数据)
4)TCL: (Transaction Control Language) ⽐如修改密码,创建⼀个⽤⼾,赋予权限等。
注意:在MySQL中的语句结尾都要加上英文的;
一,DDL
1.数据库管理
create database db01; ---创建一个数据库db01
create database db02 character set utf8; ---创建一个支持中文的数据库
utf8:只支持中文的一个字符集。字符集从ASCII(里面涵盖了不同的文字和数字之间的对应关系)可以查询。
mysql> show databases; --查看所有的数据库
+--------------------+
| Database |
+--------------------+
| __recycle_bin__ |
| db01 |
| db02 |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
7 rows in set (0.04 sec)
mysql> drop database db01; ---删除数据库
Query OK, 0 rows affected (0.02 sec)
mysql> show databases; ---验证一下db01是否被删除
+--------------------+
| Database |
+--------------------+
| __recycle_bin__ |
| db02 |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.04 sec)
2.表的管理
数据库的架构:
数据库--表--数据
安装一个数据库软件---创建数据库文件---在某个数据库文件中创造表---在表里插入数据
创建表的语句:
create table 表名(
字段1的名字 字段类型(字段的长度), ----还没结束的英文的逗号分隔
字段2的名字 字段类型(字段的长度)
);
mysql> use db02; ---在创建表之前需要先指定数据库
Database changed
mysql> create table stu(
-> name varchar(20),
-> age int
-> ); ---创建表stu
Query OK, 0 rows affected (0.05 sec)
mysql> show tables; ---查看当前数据库中所有的表
+----------------+
| Tables_in_db02 |
+----------------+
| stu |
+----------------+
1 row in set (0.06 sec)
mysql> desc stu; ---查看表stu的结构
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| age | int | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.06 sec)
mysql> alter table stu add weight double(5,2); --给表stu中添加一个字段weight
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 1
mysql> desc stu; ---验证是否添加成功
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| age | int | YES | | NULL | |
| weight | double(5,2) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.06 sec)
drop table stu;.----删除表的语句
字段类型:
数据类型 | 类型描述 | 示例 |
int | 整型 | 整数,比如年龄 |
double | 浮点型 | double(5,2):5代表最多五位,2代表小数两位,2包含在5里面。 |
char | 固定长度的字符串 | char(7):代表只能7位。 |
varchar | 可变长度的字符串 | varchar(12):代表几位都可以,最多可以12位。 |
text | 字符串 | 存放大字段字符串,比如小说 |
date | 日期类型 | 年月日:2000-10-21 |
time | 时间类型 | 时分秒:10:21:34 |
datetime | 时间类型 | 年月日和时分秒都有: 2000-10-21 10:21:34 |
3.其他的操作
mysql> alter table stu drop weight; ---删除表stu中的weight字段
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc stu ---验证是否删除
-> ;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| age | int | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.07 sec)
create table stu2 as select * from stu; ---创建一个stu2,内容结构与stu1一样,相当于备份stu1。
create table stu3 like stu; ---创建一个stu3,只有结构与stu一样,但是个空表 。
mysql> create table stu2 as select * from stu; --创建一个stu2,和stu1一样
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> create table stu3 like stu; ---创建一个stu3,和stu1结构一样
Query OK, 0 rows affected (0.05 sec)
mysql> show tables; ---验证是否创建成功
+----------------+
| Tables_in_db02 |
+----------------+
| stu |
| stu2 |
| stu3 |
+----------------+
3 rows in set (0.06 sec)
二,DML
1.插入数据的语法格式
insert into 表名(列名1,列名2,列名3....) values(列值1,列值2,列值3....);
注意:
列的数量和列值的数量⼀致!
列的数据类型和插⼊的值的类型⼀致!
mysql> insert into stu(name,age) values('小职',18); --插入数据
Query OK, 1 row affected (0.04 sec)
mysql> select * from stu; ---查看表stu中的所有数据
+------+-----+
| name | age |
+------+-----+
| 小职 | 18 |
+------+-----+
1 row in set (0.07 sec)
mysql> update stu set age = 17 where name ='小职'; ---修改表stu中的数据
Query OK, 0 rows affected (0.04 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> select * from stu; ---验证是否修改成功
+------+-----+
| name | age |
+------+-----+
| 小职 | 17 |
+------+-----+
1 row in set (0.08 sec)
delete from stu where name='小职'; ---删除表stu中的数据。
2.插入语句的三种写法
第一种标准写法
insert into emp(id,name,gender,birthday,salary,resume) values(1,'小职','女','1999-08-21',10000,'美女');
第二种省略写法
insert into emp values(1,'小职','女','1999-08-21',10000,'美女');
第三种可以挑选字段插入
insert into emp(id,name) values(1,'小职');
3.删除表中的数据
1.delete from emp;
删除表中所有的数据,删除原理是一行一行删除,删除比较慢。
2.truncate table emp;
删除表中所有的数据,先将表 drop掉,再创建一个一模一样的。速度快。
3.想删除某一部分的数据:
delete from 表名 where 条件。满足条件的就直接删除掉了。
delete from emp where name='zhangsan';
4.修改数据
修改数据的语法:
update 表名 set 字段名= 新的值,(另一个字段= 新的值) where 条件。(可添加多个字段)
update stu set name='小职', where age =17;
三,where
where条件过滤,只有满⾜条件的才会被执⾏。