数据库SQL基础

启动数据库:
service mysqld stats ====》 查看mysql服务状态(在linux交互界面执行)
      mysqld ==》d代表的是deamon 守护进程的意思
1、service mysqld start =》启动mysql服务(在linux交互界面执行)
  service iptables stop >》关闭防火墙(公司中一般不用操作)
2、mysql -uroot -p+密码 使用root账号登录mysql u:user 用户名 p:password 密码
(新创建的数据库不需要密码)
mysql -uroot -p123456
=》 使用root账号,密码为“123456”进行登录
3、退出mysql交互界面:ctrl+c 或 exit
4、service mysqld stop =====》停止mysql服务(在linux交互界面执行)
5、service mysqld restart =====》重启mysql服务(在linux交互界面执行)
6、show databases; ============》 查看有哪些数据库
7、create database dcs02; ========》 创建一个数据库名称为dcs02
8、drop database dcs02; =========》 删除dcs02这个数据库
9、use dcs02; ======》进入/切换到dcs02这个库里面
10、select database();
=》显示当前自己在哪个库里面
11、show tables; ===============》查看当前库中有哪些表
12、select version(); ===============》查看数据库版本

数据类型:
1.数值型 int(存储数据值的范围为-2的32次方至+2的32次方)
2.长数值型 bigint
3.单符点 float
4.文本型:varchar char
5.日期型:date

创建一个数据库:create database +库名
删除某个数据库:drop database +库名
显示有哪些数据库:show databases
进入某个数据库:use +库名

创建一个表:create table +表名( 字段1名称,数据类型, 约束 , 字段2名称,数据类型,约束, 字段3名称,数据类型,约束, )
删除表:drop table +表名
查看表结构:desc +表名
修改表名:alter table +表名 rename + 新表名
修改表字段名称:alter table dcs change id sid int(10) 把id字段改为sid字段,去掉自增长
增加自增长:alter table dcs change sid sid int(10) auto_increment
添加表字段,并放到第一个字段前:alter table +表名 add +字段名 数据类型 约束 first
添加表字段,并放到某个字段后:alter table +表名 add +字段名 数据类型 约束 after +字段名
将表中已有字段放到另一个字段后面:alter table +表名 modify+字段名 数据类型 约束 after +字段名
同时添加两个字段,默认添加到字段最后:alter table +表名 add(字段1 数据类型,字段2 数据类型)
删除表字段:alter table +表名 drop + 字段
删除表两个字段:alter table +表名 drop 字段1,drop 字段2
删除主键约束:alter table dcs drop primary key 删除主键约束时,需要先删除它的自增长约束(主键约束必须要用drop指令删除)
【change&modify】
change:既能对字段重命名,同时能修改字段属性
modify:只能修改字段属性以及调整字段位置

约束类型:
primary key 主键约束(具有唯一性,该字段不可能出现重复的值)
auto_increment 自增长约束(默认在前一条数据上加1),与默认约束挂钩,只能创建在主键基础上
default 默认约束(后面不加值默认为0)
not null 非空约束,该字段的值不能为null
foreign key 外键约束

数据库表结构字段含义:
field:字段
type:数据类型
null:非空约束
default:默认值约束
extra:额外约束

============================================
多表查询方法:
1、基本链接:两字段有相同值才能链接
select * from aa , cc where aa.id=cc.s_id
2、内连接:(查询两个表都符合条件的数据,只能看到字段相同的部分)
select * from aa inner join cc on aa.id=cc.s_id;
3、左连接:
select * from aa left join cc on aa.id=cc.s_id;
4、右链接:
select * from aa right join cc on aa.id=cc.s_id;
5、临时表:
select * from aa where id=xx
select name from (select * from aa where id=xx)t
6、嵌套in方法:in后接集合
7、嵌套=方法:=后接具体值

【增】:
1、直接增加整条数据:insert into 表名 values(包括主键的所有字段的值)
2、增加一条中某几个数据:insert into 表名(age,name) values(18,‘xushu’)
3、为某几个字段同时增加几条数据:insert into 表名(age,name) value(18,‘xushu’),(16,‘sisi’)

【删】:
1、删除某条数据:delete from 表名 where +条件
2、同时删除多条数据:delete from 表名 where + 条件1 or 条件2===>条件不连续
delete from 表名 where + 条件1 and 条件2===>条件连续
3、同时删除多条连续数据:delete from 表名 where + 字段 in(条件范围)=>不删除边界值
delete from 表名 where + 字段 between 条件范围
==>也删除边界值
4、删除为空数据:delete from 表名 where + 字段 is null
5、删除所有数据:delete from 表名
6、快速删除所有数据:truncate 表名
#自增长属性增长时从该字段数值最大的一位后面开始增长
delete from dcs02; =》删除dcs02表中所有数据,不删除表结构
truncate dcs02;
===》快速删除dcs02表中所有数据,不删除表结构
drop table dcs02; ===========》删除dcs02这张表(表结构与表数据都删除了)

【改】:
update 表名 set 更改的结果 where 条件;
如:update ceshi01 set math=60 where id=9;
  != 或<> 表示不等于
备份空的表结构:create table +ceshi02 like +ceshi01
备份数据:insert into +新表名 select * from +原表名

【查】:
1、查询同时满足多个条件的数据:select * from 表名 where 条件1 and 条件2
2、模糊查询:select * from +表名 where 字段 like “%值%” (%用于匹配字段开头和结尾,类似通配符)
3、查询限定的数量数据:select * from +表名 limit m,n
  #m 指下标,n指限定的数量,下标为m的开始的n条数据
select * from student2 limit 5; ===》查询前5行的所有学生信息
4、根据某个字段从小到大排序(正序):select * from +表名 order by 字段 asc
5、根据某个字段从大到小排序(倒序):select * from +表名 order by 字段 desc
6、根据某字段分组:select * from student2 group by class; ===》根据班级进行分组
7、对某个字段进行去重:select distinct(字段) from +表名
8、筛选时对字段取别名:select class as A,sum(math) as M from student group by class
9、统计查询数据的数量:select count(字段名) from +表名

*注意点:
1、group by后面不能接where,但是where后面可以接group by,相当于先用where筛选一遍然后再通过group by进行分组
2、group by分组函数一般和聚合函数一起使用,不能和除了分组以外的字段结合使用
3、group by后面不能接and
4、聚合函数做为条件时,不能放在where后面,只能放在having后面

=======================================

存储过程:
【基本格式】:
drop procedure if exists 存储过程名称 --删除已存在重复存储过程#加强代码的健壮性
drop procedure 存储过程名称() --创建新的存储过程
begin
  #添加sql语句块
end

call a() ----调用存储过程

【案例题】:
现在有一个user用户表,需要往user表中插入1000个登录 用户要求如下:
1、在插入用户前先判断是否存在1000个登录用户,如果存在则统计表中实 际的行数、如若不存在则自动补齐剩余的数据
2、表名为user,存储过程名字随意取,表中字段有id user_name user_pwd verify 格式如下(1,user1,123456,W4E38J),且id、用户名不能重复,verify 验证码字段为随机生成6位数验证码。
#concat函数 可以把2个字符串进行连接。
【解答过程】:
drop procedure if exists test01;
create procedure test01(n int)
bigin
  declare i int default (select count() from user);
  declare x varchar(10) default “”; #初始化x的状态
  declare y varchar(10) default “”;
  /drop table if exists user;
  create table user(id int(4) PRIMARY key auto_increment,user_name varchar(20),user_pwd int(4),verify varchar(20));
  insert into user values(1,‘user1’,123456,‘W4E38J’);
/
  if i>=n then #5>=1000
    select count(
) from user;
      else
        while n>i do
        set x = (select concat(‘user’,i+1));
        set y = (select substr(md5(rand()),1,6));
        insert into user(user_name,user_pwd,verify) values(x,123456,y);
        set i=i+1;
      end while;
  end if;
end

call test01(1000)
select concat(‘user’,1)
select substr(md5(rand()),1,6)

================================================

索引:
普通索引:
create index aa on student(age)>给student表的age字段创建一个名为aa的索引
show index from student
>查询student表中的索引
alter table student drop index aa==>删除student表中aa索引
唯一索引:(字段值唯一)
create unique index dd on student(id)>给student表的id字段创建一个名为dd的唯一索引
alter table student drop index dd
主键索引:(创建主键时自动创建主键索引,反之亦然)
》不能同时创建多个主键索引
alter table student add primary key(id)>给student表中id字段添加主键索引(自动产生主键约束)
alter table student drop primary key
>删除student表中的主键索引(同时自动删除主键约束)

视图(虚拟表)
创建视图:
create view xx as (select id,name,age from student)==>创建一个以student表中id,name,age字段为内容,名为xx的视图
show CREATE VIEW xx 或 show tables ==>查看视图
drop view xx ==>删除xx视图

外键约束(主表中有的值子表才能插入数据,子表中没有数据或数据与主表一致才能创建外键)

创建一个表dcs1并将引擎改为innodb
create table dcs1(id int(4),name varchar(10)) ENGINE=INNODB
创建dcs2表,更改引擎并建立以A为名的外键约束,关联主表dcs1中的id字段
create table dcs2(sid int(4),sname varchar(10),CONSTRAINT A FOREIGN key(sid) REFERENCES dcs1(id)) ENGINE=INNODB
REFERENCES:引用
删除dcs2子表的外键A
alter table dcs2 drop foreign key A

  • 需先删除子表数据,才能删除主表相应数据
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值