码迷,mamicode.com
首页 > 数据库 > 详细

MySQL数据库

时间:2020-07-19 23:45:47      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:into   sql   inf   acl   maria   tom   tween   最大值   arch   

常见的DBMS介绍

? 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,主要用于移动设备和嵌入式设备中

常见的MySQL命令

一丶常见的数据库命令

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();

二丶表相关的SQL语句

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;

二丶DML数据操作语言

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);

四、SQL练习

导入emp.sql 命令行界面: source C:\Users\Administrator\Desktop\emp\emp.sql;

1.emp表

技术图片

2.dept表

技术图片

1.去重distinct

select distinct 字段名 from 表名;

(1).查询员工表中有哪些工作(去重)

select distinct job from emp;

(2).查询员工表中的部门编号deptno有哪些

select distinct deptno from emp;

2.is null和is not null

(1).查询没有上级领导的员工信息

select * from emp where mgr is null;

(2).查询有上级领导的员工姓名,工资和工作

select ename,sal,job from emp where mgr is not null;

3.比较运算符 > < >= <= = != 和<>(相当于不等于)

(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<>‘程序员‘;

4.and和or

(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;

5.in

(1)当查询某个字段的值为多个值的时候使用

? *查询工资为3000/1500/5000的员工信息

select * from emp where sal in(3000,1500,5000);

6.between x and y (包含x和y)

(1) 当查询某个字段的值在某两个值之间的时候使用

? * 查询工资在1000-2000之间的员工姓名和工资

select ename,sal from emp where sal between 1000 and 2000;

7.综合练习

*查询有上级领导并且是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   

原文地址:https://www.cnblogs.com/enterty/p/13109738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!