数据库1——SQL语言基础
背景知识:
1.SQL语言:结构化查询语言(Structured Query Language) 可以通过SQL语言操作oracle、mysql、sql server、sqlite等所有关系型数据库
2.SQL语言主要分为:
- DQL:数据查询语言,对数据进行查询,如select
- DDL:数据定义语言,进行数据库、表的管理等,如create、drop
- DML:数据操作语言,对数据进行增、删、改,如insert、update、delete
- TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
一、基本语法
1.SQL语句注释:
- 单行注释:--注释内容
- 多行注释:/*注释内容*/
2.MySQL常用数据类型
- 整数:int,有符号范围(-2147483648,2147483647),无符号范围(0,4294967295),int unsigned
- 小整数:tinyint,有符号整数(-128,127),无符号范围(0,255)
- 小数:decimal,如decimal(5,2)表示存5位数,小数占2位,不能超过2位;整数占3位,不能超过3位
- 字符串:varchar,如varchar(3)表示最多存3个字符,一个中文或一个字母都占一个字符
- 日期时间:datetime,范围(1000-01-01 00:00:00~9999-12-31 23:59:59)
3.数据库中的元素
- 数据库(database)
- 表(table):行与列组成的二维表格
- 字段(field):表中的列
- 记录(record):表中的一行
二、SQL语句
1. CREATE TABLE 创建表
语法:
create table 表名(
字段名 数据类型,
字段名 数据类型
......
);
例1:创建表a,字段要求:name(姓名),数据类型:varchar(字符串),长度为10
create table a(name varchar(10));
例2:创建表c,字段要求:id,数据类型为int;name(姓名),数据类型为varchar,长度为20;age(年龄),数据类型为tinyint unsigned;
create table c(
id int,
name varchar(20),
age tinyint unsigned
);
2. INSERT 添加数据
(1)插入一条数据:
语法1:(所有字段设置值,值的顺序与表中字段的顺序对应)
insert into 表名 values(值,值,值...);
例1:表c插入一条数据
insert into c values(1,'liu',30);
语法2:(部分字段设置值,值的顺序与给出的字段顺序对应)
insert into 表名 (字段名,字段名,字段名...)values(值,值,值...);
例2:表c插入一条数据,只设置id和姓名name
insert into c (id,name)values(2,'zhou');
(2)插入多条数据:
语法1:(写多条insert语句,语句之间用英文分号隔开)
例3:表c插入三条记录
insert into c values(5,'周瑜',25);
insert into c (id,name) values(6,'鲁肃');
insert into c (name) values('小乔');
语法2:(写一条insert语句,添加多条记录,数据之间用逗号隔开)
insert into 表名 values (值,值...),(值,值...)...(值,值...);
例4:表c插入三条记录
insert into c values(10,'张三',10),
(11,'李四',20),
(12,'王五',30);
语法3:(写一条insert语句,添加多条记录,数据之间用逗号隔开,设置指定字段)
insert into 表名 (字段名,字段名...)values (值,值...),(值,值...)...(值,值...);
例5:表c插入三条记录
insert into c (id,name)values(13,'光绪'),
(14,'康熙'),
(15,'雍正');
3. SELECT 简单查询
(1)查询所有字段:
语法1:
select * from 表名;(*是按照建表顺序显示字段名,想调整顺序可在语法2调整)
(2)查询部分字段:
语法2:
select 字段名,字段名... from 表名;
4.UPDATE 修改数据
语法:update 表名 set 字段1=值1,字段2=值2... where 条件;
例1:修改表c,所有人age字段改为50
update c set age=50;
例2:修改表c,id为2的人name字段改为‘狄仁杰’,age字段改为20
update c set name='狄仁杰',age=20 where id=2;
例3:修改表c,name为刘备的记录该为李白
update c set name='李白' where name='刘备';
例3:修改表c,id>10的涨一岁
update c set age=age+1 where id>10;
5.DELETE删除表中的记录
语法:delete from 表名 where 条件;
例1:删除表c中id为6的记录
delete from c where id=6;
例2:删除表c所有记录
delete from c ;
6.TRUNCATE删除表中的记录
语法:truncate table 表名 ;(删除表中所有记录,保留表结构)
例1:删除表c所有数据
truncate table c;
delete与truncate的区别
- 在速度上,truncate>delete;
- 如果想删除部分数据智能用delete,注意带where子句;
- 如果想保留表而将所有数据删除,自增长字段恢复从1开始,用truncate。
7.DROP TABLE删除表
语法1:drop table 表名;
例1:删除表a
drop table a;
语法2:drop table if exists 表名;
例1:如果表a存在删除表a
drop table if exists a;

浙公网安备 33010602011771号