一,SQL简介
SQL:Structured Query Language结构化的查询语言,用来对数据库进行查询、更新和管理的一种特殊的语言。DML是SQL语言的核心。
包含三个部分:
DML
Data Manipulation language数据操纵语言
用于检索或更新数据库表:insert、delete、update、select增删改查
DDL
Data Defination language数据定义语言
用于定义的数据的结构:create alter drop
DCL
Data Control language数据控制语言
用于定义数据库用户的权限:grant revoke
二,表和库的管理
1,数据类型
整数型:smallint、int、bigint
小数型:float、double
日期时间:date、time、datetime、timestamp
字符串:varchar、char,text
其他:clob存储文本大数据
blod存储二进制大数据
2,创建表
create table 表名 ( 列名 数据类型 特征, -- 字段名 属性名 列名 数据类型 特征, …… 列名 数据类型 特征 )charset=utf8;
示例
create table t_user ( id int, username varchar(20), password varchar(50) );
create table t_student ( id int primary key auto_increment, -- 将id设为主键 自动增长 默认从1开始,每次递增 name varchar(10) not null, -- 不允许为空 age int, sex varchar(8) not null default '男', -- 指定默认值 address varchar(100), height double, birthday date )charset=utf8;
insert into t_student(name,age,sex,birthday,height) values('张无忌',21,'男','2002-10-9',176.3); insert into t_student(name,age,birthday,height) values('张三丰',21,'2002-10-9',176.3); insert into t_student(name,age,sex) values(null,22,'女'); insert into t_student values('钱多多',20,'女','南京',172.1,now());
三、修改表
添加列
语法:
alter table 表名 add 列名 数据类型;
示例:
在t_student表中增加1个名为weight体重字段,类型为双精度。
alter table t_student add weight double;
修改列的类型
语法:
alter table 表名 modify 列名 新数据类型;
示例:
将t_student表中name姓名字段的宽度修改为250。
alter table t_student modify name varchar(250);
修改列名
alter table 表名 change 原列名 新列名 数据类型;
示例:
将t_student表中sex字段名称修改为gender。
alter table t_student change sex gender varchar(8);
删除列
语法:
alter table 表名 drop 列名;
示例:
删除t_student表中weight列(字段)。
alter table t_student drop weight;
修改表名
语法:
alter table 原表名 rename 新表名;
或
rename table 原表名 to 新表名;
示例:
将t_student表名修改为student。
alter table t_student rename student;
rename table student to t_student;
四,截断表
清空表中的数据,作法类似于无条件的delete语句
语法:
truncate table 表名;
示例:
truncate table t_student;
select * from t_student;
insert into t_student(name,gender) values('tom','男');
insert into t_student(name,gender) values('mike','女');
select * from t_student;
delete与truncate的区别:
delete会记录日志,所以速度慢,而truncate不记录日志,清空表并释放资源,速度快
delete可以指定条件只删除部分数据,而truncate只能用来清空表中所有数据
elete不会将自动增长列归零,而truncate会使自动增长的列如id列归零
五、创建库
语法:
create database 数据库名 charset utf8;
create database if not exists 数据库名 charset utf8;
示例:
create database if not exists shop charset utf8;
六、删除库
语法:
drop database 数据库名;
drop database if exists 数据库名;
示例:
drop database if exists shop;