时间:2021-07-01 10:21:17 帮助过:30人阅读
? 1.MySQL:Oracle公司的产品,MySQL在08年被Sun公司收购,09年Sun公司被
Oracle公司收购,开源软件。被收购后MySQL创始人从Oracle离开创建了MariaDB,
MariaDB就是MySQL软件的一个分支,市占率第一。
? 2.Oracle:Oracle公司产品,性能最高价格最贵,不是开源的,市占率第二。
? 3.SQLServer:微软公司产品, .net语言使用此数据库,市占率第三。
? 4.DB2:IBM公司产品
? 5.SQLite:轻量级数据库软件,安装包几十k,主要用于移动设备和嵌入式设备中
1.查询所有数据库:
show databases;
2.创建数据库
*创建数据库:
create database 数据库名;
*创建数据库,判断不存在时在创建
create database if not exists 数据库名;
*创建数据库,判断不存在是在创建,且指定字符集
create database if not exists 数据库名 character set 字符集;
3.使用数据库
use 数据库名;
4.查询数据库详情
show create database 数据库名;
5.删除数据库
drop database 数据库名;
6.修改数据库字符集
alter database 数据库名 character set 字符集名称;
7.查询当前正在使用的数据库
select database();
1.创建表
create table 表名(字段1 类型,字段2 类型,...);
create table 表名(字段1 类型,字段2 类型,...) charset=utf8;
例如:
create table person(name varchar(5),age int);
create table student(name varchar(10),score int) charset=utf8;
create table hero(name varchar(10),money int) charset=default;
2.查询表
*查询所有表
show tables;
*查询表的详情
show create table 表名;
*查询表字段
desc 表名;
3.删除表
drop table 表名;
4.修改表
*修改表名
rename table 表名 to 新表名;
例如:
rename table person to t_person;
*添加表字段
*添加到表字段的最后面
alter table 表名 add 字段名 类型;
例如:
alter table student add gender varchar(5);
*添加到表字段的最前面
alter table 表名 add 字段名 类型 first;
例如:
alter table student add id int first;
*添加到某个字段的后面
alter table 表名 add 新字段名 类型 after 字段名;
例如:
alter table student add money int after name;
*删除表字段
alter table 表名 drop 字段名;
例如:
alter table student drop money;
*修改表字段
alter table 表名 change 原字段名 新字段名 新类型;
例如:
alter table student change gender money int;
1.DML数据操作语言:执行操作数据库的SQL必须保证已经使用了某个数据库,并且存在数据所对应的表
2.插入数据(增)
*全表插入格式(要求值的数量和顺序和表字段保持一致)
insert into 表名 values(值1,值2,值3,...);
例如:
insert into person values(‘tom‘,18);
*指定字段插入格式(要求值的数量与顺序和指定的一值)
insert into 表名(字段名1,字段名2) values(值1,值2);
例如:
insert into person(name) values(‘Jerry‘);
*批量插入
insert into 表名 values(值1,值2),(值1,值2);
insert into 表名(字段名) values(值1),(值1);
例如:
insert into person values(‘Lucy‘,20),(‘Lily‘,21);
insert into person(name) values("Lilei"),(‘Hanmeimei‘);
*插入中文
insert into person values(‘刘德华‘,50);
如果执行上面SQL语句出现错误,提示中包含16进制内容,执行以下SQL
set names gbk;
3.查询数据
select 字段信息 from 表名 where 条件;
例如:
select name from person;//查询所有name信息
select name,age from person where age>20;//查询age大于20的所有name
select * from person;//查询所有表内容信息
4.修改数据
update 表名 set 字段名=xxx,字段名=xxx where 条件;
例如:
update person set age=8 where name =‘Tom‘;
update person set age=10 where age is null;//如果age为null的情况下,把age改为10
5.删除数据
delete from 表名 where 条件;//如果不写where后面条件,则把表的全部内容删除
例如:
delete from person where age=10;//删除age等于10的
delete from person where name=‘刘德华‘;//删除表中name为刘德华的数据
delete from person where age<20;//删除表中age小于20的数据
delete from person;//删除表中全部内容
*如果要删除所有记录:
delete from 表名;//不推荐使用,有多少条记录就会执行多少次删除操作
truncate table 表名;//推荐使用,效率更高,先删除表,在创建一张一模一样的空表
1.整数类型:
? * int(m)和bigint(m)等效java中的long, m代表显示长度,位数不够,前面补0.
create table t1(name varchar(10),age int(10) zerofill);
insert into t1 values(‘aaa‘,18);
select * from t1; //name=‘aaa‘ age=0000000018
2.浮点数:
? * double(m,d) : m代表总长度,d代表小数长度 53.234 double(5,3),超高精度浮点数 decimal(m,d)精度远远高于double,只有涉及超高精度时使用.
3.字符串:
? * char(m):固定长度,m=10 存abc 占10,优点:执行效率略高,最大长度255
? * varchar(m):可变长度,m=10,存abc,占3, 优点:更节省空间,最大长度65535,但建议存255以下
? * text(m):可变长度,最大长度65535,建议保存长大于255的。
4.日期:
? * date: 只能保存年 月 日
? * time: 只能保存时 分 秒
? * datetime: 默认值为null,最大值9999-12-31
? * timestamp: (时间戳:距1970年1月1号的毫秒数): 默认值为当前系统时间最大值2038-1-19
? 例如:
create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);
insert into t_date values(null,null,‘2020-6-12 16:19:20‘,null);
insert into t_date values(‘2018-10-12‘,‘15:30:20‘,null,null);
导入emp.sql 命令行界面: source C:\Users\Administrator\Desktop\emp\emp.sql;
select distinct 字段名 from 表名;
(1).查询员工表中有哪些工作(去重)
select distinct job from emp;
(2).查询员工表中的部门编号deptno有哪些
select distinct deptno from emp;
(1).查询没有上级领导的员工信息
select * from emp where mgr is null;
(2).查询有上级领导的员工姓名,工资和工作
select ename,sal,job from emp where mgr is not null;
(1) 查询工资小于等于3000的员工姓名和工资
select ename,sal from emp where sal<=3000;
(2)查询不是程序员的员工姓名和工作(两种写法)
select ename,job from emp where job!=‘程序员‘;
select ename,job from emp where job<>‘程序员‘;
(1)and类似于java中的&& ,当需要同时满足多个条件的时候使用
(2)or类似于java总的|| ,当多个条件满足一个就行的时候使用
? *查询1号部门工资大于2000的员工信息
select * from emp where deptno=1 and sal>2000;
? *查询工作是人事或者工资大于3000的员工姓名,工作,工资
select ename,job,sal from emp where job=‘人事‘ or sal>3000;
(1)当查询某个字段的值为多个值的时候使用
? *查询工资为3000/1500/5000的员工信息
select * from emp where sal in(3000,1500,5000);
(1) 当查询某个字段的值在某两个值之间的时候使用
? * 查询工资在1000-2000之间的员工姓名和工资
select ename,sal from emp where sal between 1000 and 2000;
*查询有上级领导并且是3号部门的员工信息
select * from emp where mgr is not null and deptno=3;
*查询2号部门工资在1000到2000之间的员工姓名,工资和部门编号
select ename,sal,deptno from emp where deptno=2 and sal between 1000 and 2000;
*查询1号部门工资为800和1600的员工信息
select * from emp where deptno=1 and sal in(800,1600);
*查询1号和2号部门工资高于2000的员工信息
select * from emp where deptno in(1,2) and sal>2000;
*查询员工表中出现的部门编号有哪几个
select distinct deptno from emp;
MySQL数据库
标签:into sql inf acl maria tom tween 最大值 arch