1.create database txt; //创建txt数据库
2.show databases; //查看所有数据库
3.use txt //切入到txt数据库
4.drop database txt; //删除txt数据库
* 常用的数据类型:
int 整数 age int
double 小数 score double(4,2)
char 定长字符串 gender char(10) "呵呵"
varchar 变长字符串 name varchar(20) "张三"
date 日期类型 birthday date 1999-11-11
TIMESTAMP 时间戳类型 regist_time TIMESTAMP 2016-08-29 15:05:33 * 如果给该字段赋值为null,则默认使用当前系统的时间赋值
* 完整性约束:
* 主键约束:
* 主键自增长:
* 非空约束
* 唯一约束:
CREATE TABLE student(
sid INT PRIMARY KEY AUTO_INCREMENT, -- 主键约束(非空且唯一)
sname VARCHAR(20) UNIQUE,-- 唯一约束
gender CHAR(1) NOT NULL -- 非空约束
);
1.创建表:
CREATE TABLE student(
字段名 数据类型
sid INT ,
sname VARCHAR(20),
gender CHAR(1),
score DOUBLE(4,2),
birthday TIMESTAMP
);
2.查看表:
show tables; //查看所有表
desc user; //查看user表字段、结构
3.修改表
1.添加列:给stu表添加classname列:
ALTER TABLE stu ADD (classname varchar(100));
2.修改列类型:修改stu表的gender列类型为CHAR(2):
ALTER TABLE stu MODIFY gender CHAR(2);
3.修改列名:修改stu表的gender列名为sex:
ALTER TABLE stu change gender sex CHAR(2);
alter table user rename column 旧列名 TO 新列名;//改列名
4.删除列:删除stu表的classname列:
ALTER TABLE stu DROP classname;
5.修改表名称:修改stu表名称为student:
ALTER TABLE stu RENAME TO student;
4.删除表:drop table user00; //删除user00表
3-对表中数据-增删改-DML
1.insert into user(name,age,content) values('ll','19','0000');
2.delete from user where id=3; //删除id=3的数据.
id in(1,3,5); //删除id=1、3、5的数据.
id<=3 and id>=5; //删除id小于等于3,和大于等于5的数据.
id between 3 and 5; //删除id在3~5之间的数据.
清空表中所有数据:TRUNCATE TABLE tb_student; -- 先删除表,再创建表
3.update user set name="baby",sex="gil" where id=3; //将id=3的name改成baby,sex改成gil.
4-对表中数据-查询-DQL
语法:SELECT selection_list /*要查询的列名称*/
FROM table_list /*要查询的表名称*/
WHERE condition /*行条件*/
GROUP BY grouping_columns /*对结果分组*/
HAVING condition /*分组后的行条件*/
ORDER BY sorting_columns /*对结果排序*/
LIMIT offset_start, row_count /*结果限定*/
模糊查询:like
通配符:
_:代表单个任意字符
%: 代表多个任意字符
排序:order by
升序:order by 字段名 [asc];
降序:order by 字段名 desc;
聚合函数
聚合函数是用来做纵向运算的函数:
COUNT():统计指定列不为NULL的记录行数;
MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
select count(*) from user; //统计表行数
sum(age);//求和
avg(age);//平均数
max(age)://最大值
min(age)://最小值
1.select * from user where id=2; //查找id为2的所有数据
2.select * from user where id between 3 and 5; //查找id在3和5之间的所有数据
3.select * from user where id in(1,3,5); //查找id为1、3、5的所有数据
4.select * from user where sex like "%o%"; //查询sex中包含o的数据
5.select name,pass from user where id=2;//查询特定列(name,pass)id=2的数据.
6.select distinct name from user; //查询除去表中name重复值的数据
7.select * from user order by name desc; asc升序 //根据name排序从大到小,即降序
8.使用limit限定输出个数:(各DBMS不同)
select * from user order by age desc limit 1,3; //第二个位置取3个
select * from user order by age desc limit 5; //第一个位置取5个即0,5;
5-多表查询
一、多表查询
简言之,根据特定的连接条件从不同的表中获取所需的数据
二、多表查询语法:
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2;
但要注意where 不要省了,省略where 即为笛卡尔集,而且where 条件要有效,
两张表间有一个相同的字段,才好进行有效的多表查询
查询时列名前,加表名或表别名前辍(如果字段在两个表中是唯一的可以不加)
为了简化SQL书写,可为表名定义别名,格式:from 表名别名
如:from emp e,dept d
建议使用表的别名及表前缀,使用表别名可以简化查询,而使用表前缀则可以提高查询性能
例:查询每个员工的工号,姓名,工资,部门名和工作地点
select empno,ename,sal,dname,loc from emp,dept
where emp.deptno=dept.deptno;