Mysql数据库常见使用

常见使用:

​
--链接本地数据库
mysql -uroot -p; 
--修改密码
mysqladmin -uroot -proot password 新密码
--退出数据库
quit;
--创建数据库
create database `student`;  
--查看
show databases;
--差指定库
show create database `student`;
--使用(切换)数据库
use `student`;
--删除数据库
drop database `student`;
--创建表(学员表)
create table `comment` 
--查看数据库下的表
show tables;
--删除表
drop table `student`;
 --查看表结构
desc `student`;
 --查看表数据
selest * from `student`;
 --插入数据
insert into `student`(`name`, `age`, `gender`, `height`) value('zhangsan', 18, '男', 1.75);
 --插入多条数据
insert into `person` values(1,'铁锤妹子','18879212345',18),(2,'石榴','18179792323',19);

​

字段类型:

--comment  字段说明
--需要在数据类型右边加上无符号关键字unsigned
--整数类型   --无符号取值范围               --有符号取值范围                                           --字节         
tinyint   --取值范围0 ~ 255             --取值范围-128 ~ 127                                         --1
smallint  --取值范围0 ~ 65535           --取值范围-32768 ~ 32767                                     --2
mediumint --取值范围0 ~ 16777215        --取值范围-8388608 ~ 8388607                                 --3
int       --取值范围0 ~ 4294967295      --取值范围-2147483648 ~ 2147483647                           --4
bigint    --取值范围0 ~ 18446744073709551615   --取值范围-9223372036854775808 ~ 922337203685775807   --8

--浮点数
float(5,2) --5个数  2个小数点 四舍五入
double(5,2)  --   
  
--定点类型
decimal( )定点数以字符串形式存储,在对精度要求比较高的时候(如货币、科学数据),
使用 decimal 的类型比较好,两个浮点数进行减法和比较运算时也容易出问题  

--字符串类型
char()  -- 
varchar(n) --1~n之间的字符个数  65535

--枚举类型
enum('a', 'b', 'c')  --单选 性别 男 女 最多选65535值
set() --最多选64值  多选 例如爱好




--日期
year  --单字节类型 ‘年’
-- (1)使用4位字符串或数字表示;值范围1901~2155
-- (2)使用两位字符串表示:‘00’~ ‘99’
--      00~69 会转换2000~2069
--      70~99 会转换1970~1999
-- (3)使用两位数字1~99 
--      1~69 会转换 2001~2069
--      70~99 会转换1970~1999

time --类型用于只需要时间信息的值,在存储时需要 3 个字节。
    --格式为 hh:mm:ss。hh 表示小时,mm 表示分钟,ss 表示秒。

Date --类型用于仅需要日期值时,没有时间部分,在存储时需要 3 个字节。
    --日期格式为 'yyyy-mm-dd',其中 yyyy 表示年,mm 表示月,dd 表示日。

timestamp --时间戳

datetime --类型用于需要同时包含日期和时间信息的值,在存储时需要 8 个字节。
--日期格式为 'yyyy-mm-dd hh:mm:ss',其中 yyyy 表示年,mm 表示月,
--dd 表示日,hh 表示小时,mm 表示分钟,ss 表示秒。取值范围为 '1000-01-01 00:00:00'~'9999-12-3 23:59:59'。

基本语句:

AFTER 在某个字段后面
after sex;

FIRST 放在表的最前面
first sex;

--给数据表重命名
alter table `旧表名` rename `新表名`;
alter table `stu` rename `student`;

--修改表选项
alter table `表名` 表选项=值;
alter table `student` charset=gbk;

--新增字段
ALTER TABLE 表名 ADD 字段名 字段类型;
alter table `student` add `add_time` timestamp;

--调整字段位置(排序)
ALTER TABLE 表名 MODIFY 字段名 [字段类型 字段属性];
alter table `stu` modify `phone` char(11);

--字段重命名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 字段类型 [字段属性];
alter table `student` change  `phone` `nnn` char(11); 

--修改字段
ALTER TABLE 表名 MODIFY 字段名 新字段类型 [字段属性];
alter table `student` modify `phone` char(11);

--删除字段
ALTER TABLE 表名 DROP 字段名;
alter table `student` drop `phone`;

约束:


--唯一约束 唯一性 类似手机号码 id
unique
`account` char(11) unique comment '登录账户手机';

--非空约束 默认null 不能留空
not null  
`gender` enum('男','女','保密') not null default '保密' comment '性别',

--默认值约束  默认有值
default
`gender` enum('男','女','保密') not null default '保密' comment '性别',

--自增约束  类型++
auto_increment;
`id` int primary key auto_increment; 

--主键约束  唯一性才能做主键 最好使用id为主键
primary key;
primary key (`id`);

练习sql:

--所有字段添加数据
INSERT INTO 表名 VALUES('…', '…', '…', '…');
insert into `num` values 

--为部分字段添加数据
INSERT INTO 表名(字段名1, 字段名2, 字段名3 ……) VALUES('值1', '值2', '值3' ……);
insert into `person` (`name`,`phone`) value('铁锤妹子','18879212345');

--批量插入
INSERT INTO 表名(字段名1) VALUES(值1), (值1) ,(值1);
insert into `person` values(1,'铁锤妹子','18879212345',18),(2,'石榴','18179792323',19);

--修改表数据(条件)
UPDATE 表名 SET 字段名=值1,[字段名=值2]  [WHERE 字段=值];
update `employee` set `gender`='女' where `name`='李四';

--删除数据
DELETE FROM 表名 [WHERE 字段名=值];
delete from `employee` where `name`='张三';



-- 1.查询出部门编号为30的所有员工
SELECT * FROM 表名 [WHERE 字段名=值];
select * from `staff` where `deptno`=30;


-- 2. 所有销售员的姓名、编号和部门编号。
select `empno`,`ename`,`deptno` from `staff` `job`='销售员';


-- 3. 找出奖金高于工资的员工。
select * from `staff` where `comm`>`sal`;


-- 4. 找出奖金高于工资60%的员工。
select * from `staff` where `comm`>`sal`*0.6;


-- 5. 找出部门编号为10中所有经理, 和部门编号为20中所有销售员的详细资料。
select * from `staff` where (`deptno`=10 and `job`='经理') or (`deptno`=20 and `job`='销售员');
or  --或  两边对一个
and --且  两边都对


-- 6. 找出部门编号为10中所有经理, 部门编号为20中所有销售员, 还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料。
select * from `staff` where (`deptno`=10 and `job`='经理') or (`deptno`=20 and `job`='销售员') or (`job` not in('经理','销售员') and `sal`>=20000);



-- 7. 无奖金或奖金低于1000的员工。
select * from `staff` where `comm` is null or `comm`<1000;


-- 8. 查询名字由三个字组成的员工。length()函数或模糊查询
select * from `staff` where `ename` like '___';
select * from `staff` where length(`ename`) = 9;

-- 9. 查询2000年入职的员工。
select * from `staff` where `hiredate` like '2000-%';
select * from `staff` where `hiredate` BETWEEN '2000-01-01' and '2000-12-31';
like --模糊查询

-- 10. 查询所有员工详细信息,用编号升序排序
select * from `staff` order by `mgr`;


-- 11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序
select * from `staff` order by `sal` desc,`hiredate`;

一些sql函数:

--函数
-- 1、求和
sum()
select sum(numm) from `strff`;

-- 2、计数
count()

-- 3、最大、最小值
max() min()

-- 4、求平均数
avg()

-- HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
having

-- 查询存在的
in

-- 查询不存在的
not in 

-- 查询长度
char_length(name)=4

select * from emp where id not between 3 and 6;

not between --不要3 ~ 6
between     --只要3 ~ 6

-- 对有重复的展示数据进行去重操作  
distinct

limit 5;     -- 单个数字5代表从最前面开始显示5条
limit 2,6;   -- 从起始行数为2开始往后显示6行,这里不包含其实行数2。
    
-- 默认升序 asc  倒序 desc
order by 

sql链表:

-- 交叉链接 又称 笛卡尔积
select 字段 from 表1 cross join 表2 [where 子句]
-- 或
select 字段 from 表1,表2 [where 子句]
-- 一般情况下不建议使用交叉连接

-- 内连接
select 字段名 from 表1 inner join 表2 on 子句

-- 外连接
-- 左连接
select 字段名 from 表1 left join 表2 on 子句
-- 右链接
select 字段名 from 表1 right join 表2 on 子句

-- 合并查询
SELECT course_name FROM `dc_course` where id < 3 or course_name='PHP';   
union 合并 

-- 子查询
-- 嵌套查询使用运算符去判断(查询可以作为条件用括号包裹起来)不推荐使用 性能比价差

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值