SQL 常用命令
来源:互联网 发布:淘宝手机号解除绑定 编辑:程序博客网 时间:2024/05/18 01:24
1.操作数据库
1.1 查看存在的库、定义信息、正在使用和切换数据库的命令
a.查看数据库服务器已有的数据库:
show databases;
b.查看数据库的定义信息:
show create database 数据库名称;
c.切换/连接数据库
use 数据库名称;
d.查看当前连接的数据库:
select database();
1.2数据库的创建
语法:create database 数据库名称;
如: create database t1;
1.3数据库修改和删除
修改语法:
alter database 数据库名称 character set 字符编码名称;
如: alter database t1 character set gbk;
删除语法:
drop database 数据库名称;
如:drop database t1;
2.mysql常用数据类型
- int:整型 double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
- char:固定长度字符串类型; varchar:可变长度字符串类型; text:字符串类型;
- blob:字节类型;
- date:日期类型,格式为:yyyy-MM-dd;
- time:时间类型,格式为:hh:mm:ss
- timestamp:时间戳类型 格式为:yyyy-MM-dd hh:mm:ss
3.操作表
3.1查看当前库已有表、表定义及表结构
查看当前库已有表:
show tables;
查看表定义信息:
show create table 表名;
查看表结构:
desc 表名;
3.2创建表
语法:
create table 表名( 列名 数据类型(长度), 列名 数据类型(长度), …… );
注意:最后一列的定义后面不需要加逗号
如:
create table emp( eid int, ename varchar(20), eage int );
3.3修改表
a.为emp表添加列address varchar(30)
alter table emp add address varchar(30);
b.修改emp表的address 数据长度为40
alter table emp modify address varchar(40);
c. 修改address列名为addr
alter table emp change address addr varchar(40);
d. 删除emp表的addr列
alter table emp drop addr;
e. 修改emp表的表名为employee
alter table emp rename to employee; alter table emp rename employee;
3.4删除表
语法: drop table 表名;
如:drop table employee;
4.完整性约束
4.1约束简述
完整性约束:保证数据库表中数据的正确性,合理性等。
数据库约束:
- 主键约束:用户保证表中数据的唯一性(没有重复的数据)
- not null:非空约束。约束列中的数据非空
- unique:唯一约束。保证列数据的唯一性(不能重复)
- 外键约束:保证表中数据引用的完整性。
4.2约束详解
a.创建主键约束:主键列值必须非空且唯一,并且一个表有且只有一个主键。
方式一:
create table stu ( sid varchar(10) primary key, sname varchar(20));
方式二:
create table stu ( sid varchar(10), sname varchar(20), primary key(sid));
方式三: 先创建表,然后修改表添加主键
create table stu ( sid varchar(10), sname varchar(20)); alter table stu add primary key(sid);
主键自增:auto_increment
create table stu( sid int primary key auto_increment, sname varchar(20));
b.非空约束:not null
方式一:
create table stu( sid int, sname varchar(20) not null);
方式二:alter table stu modify sname varchar(20) not null;
c.唯一约束:unique
create table stu( sid int, sname varchar(20) unique);alter table stu add address varchar(30) unique;
d.外键约束:foreign key
方式一:
create table dept(deptno int,deptname varchar(20),primary key(deptno));create table emp( eid int, ename varchar(20), e_d_no int, primary key(eid), foreign key(e_d_no) references dept(deptno));
方式二:
先定义表结构,然后修改表添加主键和外键(比较常用)
create table emp( eid int, ename varchar(20), e_d_no int); create table dept(deptno int,deptname varchar(20));
修改主表,添加主键
alter table dept add primary key(deptno);
修改从表,添加外键引用
alter table emp add foreign key(e_d_no) references dept(deptno);
DML语句:对表数据的增删改
相关命令:insert update delete
1. 向表中插入数据:
语法:insert into 表名(用逗号分隔的列名列表) values(使用逗号分隔的每列的数据列表);
如:
insert into stu(sid,sname,age,gender) values('M_001','tom',23,'male');
2.修改表数据:
update 表名 set 列名=新值,列名=新值…… [where 子句];
如:
update stu set sname=’jack’;
3 删除表中的数据
使用delete删除表数据
语法: delete from 表名 [where 子句];
如:delete from stu;
使用truncate删除表数据:
语法:truncate [table] stu;
delete和truncate区别
delete逐条删除数据(性能较低)
truncate(截断表):首先执行drop table删除表结构, 然后再执行create table创建表结构。性能较优。
DQL操作
命令只有select
语法:
SELECT selection_list /*要查询的列名称*/ FROM table_list /*要查询的表名称*/ [ WHERE condition /*筛选数据行的条件*/ GROUP BY grouping_columns /*对结果分组*/ HAVING condition /*分组后的筛选行的条件*/ ORDER BY sorting_columns /*对结果排序*/]
注:[…] 代表可选,而不是语句中有[] 。
0.基本查询:
select * from stu; /*查询所有列*/select sname,age from stu; /*查询指定列*/
1.条件查询
运算符:
- =、!=、<>、<、<=、>、>=;
- BETWEEN…AND;
- IN(set);
- IS NULL;
- AND;
- OR;
- NOT;
a.查询年龄大于35岁的人的姓名和年龄
select sname,age from stu where age>35;
b.查询年龄在15和35岁的人的姓名和年龄
select sname,age from stu where age between 15 and 35;
c.查询年龄等于25、35、45岁的人的信息
select * from stu where age in(25,35,45);
d.查询没有填写性别的人的信息
select * from stu where gender is null;
e.查询年龄大于35岁的男性的信息
select * from stu where age>35 and gender=’male’;
f.查询年龄大于35岁的信息
select * from stu where age>35;
g.查询性别不为空的人的信息
select * from stu where gender is not null;
2.模糊查询
模糊查询的通配符:
% 表示任意数量的字符
_ 表示任意一个字符
模糊查询的关键词:like
a.查询名字是字母z开头的人
select * from stu where sname like 'z%';
b.查询名字包含b字母的人
select * from stu where sname like '%b%';
c.查询名字包含n字母其n字母前只有两个字符的人
select * from stu where sname like '__n%';
以下查询使用emp表
3.列别名
使用as关键字为列定义别名,另外,该关键字可以省去
select ename as '名字', sal as '月薪' from emp e; select ename '名字', sal '月薪' from emp e;
4.排序
desc降序 asc升序(默认值)
查看雇员的月薪,并进行排序
select ename, sal as 'sal' from emp order by sal desc;
5.聚合函数
聚合函数是用来做纵向运算的函数:
- COUNT():统计指定列不为NULL的记录行数;
- MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
- MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
- SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
注意:聚合函数只返回一个结果
a.查询emp表中月薪大于2500的人数:
select count(*) from emp where sal>2500;
b.统计所有员工平均工资:
select avg(sal) from emp;
6.多表查询
笛卡尔积查询:
select * from emp,dept;
消除笛卡尔积:
内连接(等值连接)
select * from emp e,dept d where e.deptno=d.detpno;
- SQL常用命令
- SQL常用命令
- SQL常用命令
- sql常用命令
- SQL常用命令
- sql 常用命令
- SQL常用命令
- SQL常用命令
- sql常用命令
- SQL常用命令
- SQL常用命令
- SQL常用命令
- SQL常用命令
- SQL常用命令
- SQL常用命令
- SQL常用命令
- SQL常用命令
- SQL常用命令
- VBox下Linux与PC的Windows共享文件夹
- bc Kblack loves flag
- C++ primer 十二 C++中的类(一)
- Filter
- sqlite命令行下操作
- SQL 常用命令
- html 内联 块级元素,浏览器内核,css继承性
- cocoapods 升级到1.1.1 ,swift升级3.0
- java中继承的重点掌握
- linux shell中 /dev/null 2>&1 含义
- 【oracle】plsql连接oracle(localhost连接成功,ip连接提示无监听)问题
- Installation failed with message:INSTALL_CANCELED_BY_USER
- STL迭代器的"特性萃取机"-----Traits
- jquery点击show(),hide()导航例子