MYSQL个人学习笔记

1.Create  database  数据库名称

 创建数据库

2.Show   databases                        

查看所有数据库

3.Show   create  database   数据库名称     

查看某个创建的数据库

4.Drop  database  数据库名称

删除数据库

5.Alter  database   数据库名称  character  set gbk/utf8

修改某个数据库的编码

6.Create  table  表名

创建表

7.Create  table  新表名   like  就表名

创建一个和旧表一模一样的新表

8.Use  数据库名

使用某个数据库

9.Create table 表名(

字段名1,数据类型(宽度),

字段名2,数据类型(宽度),

字段名3,数据类型(宽度),

。。。。。。。。

字段名n,数据类型(宽度));

10.Show  tables

查看库中的表

11.Show  create  table  表名

查看建表语句

12.Desc   表名

查看表结构

13.Alter  table  表名  add  新字段1 类型(宽度)

                        新字段2 类型(宽度)

建表后添加新字段

14.Alter  table  表名  add  新字段2 类型(宽度)   first/after 旧字段名

建表后添加新字段(指定添加到某个字段的后面或者前面)

15.Alter table  表名 modify 旧字段 类型(宽度)    first/after 旧字段名

修改旧字段 只改变类型宽度 和位置

16.Alter table 表名  change 旧字段 类型(宽度)

修改旧字段 字段  类型宽度都可以修改

17.Alter table 表名 drop 旧字段

删除旧字段

18.Alter table 表名 rename (to)  表名

修改表名

19.Set name gbk;

表中输入汉字

 

20.主键约束

字段名 数据类型(宽度)   primary key

建表时单字段主键

Primary key(字段名1 数据类型(宽度) 字段名2 数据类型(宽度));

建表时多字段主键

Alter table 表名 add primary key (字段名);

建表后增加主键

Alter  table 表名 drop primary key(字段名)

删除主键约束

21.非空约束

字段名 数据类型 not null

建表时加非空约束

Alter  table    modify 旧字段  类型(宽度)  not  null;

建表后加非空约束

22.唯一约束

字段名 类型(宽度)  unique

建表时加唯一约束

23.默认约束

字段名 类型(宽度)  default   “默认值

建表时,添加默认约束

Alter  table  表名  modify  sex default  “默认值

建表后 添加默认约束

24.设置表的字段值自动增长

字段名  类型(宽度)  primary  key  auto_increment;

建表时

Alter table 表名 modify 字段名 类型(宽度)  auto_increment

建表后加自动增长列

25.Insert   into  表名(字段名1,字段名2。。。。。。字段名n)

             Values(1,值2.。。。。。。。。。值n);

为表中所有字段添加字段

26.Insert  into  表名   values(1,值2,。。。。。值n);

不指定字段名添加多条记录

27.Insert   into  表名(字段名1,字段名2。。。。。。字段名n)

               Values(1,值2.。。。。。。。。。值n)

                     (1,值2.。。。。。。。。。值n)

                         (1,值2.。。。。。。。。。值n)

同时添加多条记录

28.Select  *   from 表名

查看表

29.Update 表名   set  字段名1=1[字段名2=2] where 字段名=?;

更新表中记录

30.Delete  from 表名  [where条件]

删除表中数据   记录日志  自动增长列从删除前数字往下加

31.Truncate  表名   不记录日志 快速删除表中记录

 

32.Select  字段1,字段2。。。。。。。from  表名

指定字段查询表中数据

33.Select  字段1,字段2。。。。。。。from  表名    where [条件表达式]

带运算符的查询   and notor =  ,<>不等于    >=  <=

34.Select  字段1,字段2。。。。。。。from  表名 where 字段名 [not]  in(元素1,元素2 ,元素3)

in 关键字的查询

35. Select  字段1,字段2。。。。。。。from  表名 where 字段名 [not] between 1 and  2

36. Select  字段1,字段2。。。。。。。from  表名 where 字段名 is  [not]  null

   空值查询

37. Select  distinct 字段1,字段2。。。。。。。from  表名

   Distinct关键字后指定的多个字段值相同,才被认作是重复记录

38. Select  字段1,字段2。。。。。。。from  表名 where 字段名  [not]  like “字符串

    1)百分号通配符(%

        %%”包含张的字符串

        “张%”以张开头的字符串

        %张”以张结尾的字符串

     2)下划线_通配符

          可以匹配单个字符 匹配多个字符使用多个下划线通配符

39.聚合函数

(1)查看表中记录条数

  Select  count(*)  from 表名   括号中可以是字段名

 (2)查看表中去掉重复值的记录条数

   Select  count(distinct)  from 表名

 (3)求表中某个字段所有值的总和

   Select   sum(字段名)  from 表名

 (4)求某个字段的最大值

  Select   max(字段名)  from  表名

 40.对查询结果的排序

   单个字段:  select  字段名1,字段名2   form  表名 [where 条件]  order by 字段名

   多个字段:select  字段名1,字段名2   form  表名 [where 条件]  order by 字段名1[asc,desc] 字段名2[asc,desc] ;

           先按第一个字段排序,当一个字段值相同时,再按第二个字段排序

            asc 升序    desc降序

41.分组查询

   按分组的字段进行分类汇总,分组字段有几个值就有几组,也是分完组后有多少条记录,分组后查看的列可以包括分组字段和聚合函数  

select  字段名1,字段名2   form  表名  group  by  字段名1,字段名2

[having条件表达式]

注:having 关键字可以跟聚合函数,而where关键字不能。通常情况下having

关键字和group  by 一起用,用对分组后的的结果进行过滤

42.外键

1)建表时添加外键

 Alter  table  表名 add  constraint  fk_外键名  foreign key (外键字段)   

 References  参照表名(参照字段)

2)建表时添加外键约束

  Create table  表名 foreign  key(外键字段名)  references 参照表名(参照字段)

3)删除外键约束

Alter  table 表名   drop foreign key 外键名

注意:一定要先删除从表中的数据,然后在删除主表中的数据,否则会报错;

43.连接查询

1)内连接

      Select  查询字段  from  1  join   2

                            on 1.关系字段=2.关系字段

                            join  3

                            on 2.关系字段=3.关系字段

 2)外连接

          1.左连接

             Left join

             注意:如果左表的某条记录在右表中不存在,则右表中显示为空

         2.右连接

             Right join

              注意::如果右表的某条记录在左表中不存在,则左表中显示为空

44.子查询

   (1)首先会执行子查询中的语句,然后将返回的结果作为外层查询的过滤条件

        Select * from 表名  where 字段名=(select  字段名 from 表名 where  字段名)

        注意:如果内层查询得到的结果是多个值,这时不能使用等号 可以使用in.

        (2)exists 关键字的子查询(exists后面的参数可以是任意的,一个子查询只返回true false)

        Select * from 表名  where exists(select 字段名 from 表名 where 字段名 条件)

        (3)any关键字的子查询

          注意:只要满足内查询中的任意一个比较条件,就返回一个结果作为外层查询条件

           Select * from 表名 where 字段名><=any(select 字段 查询条件);

       (4)all关键字的子查询

           Select * from 表名 where 字段名><all(select 字段 查询条件);

           注意:子查询返回的结果 需要同时满足所有内层查询条件

    45.聚合函数

Count  返回某列的行数  sum 求和   max 最大值

Min  最小值   avg 平均值

1Count 函数 使用

Select count (*) from 表名;

2  sum 函数  使用

Select sum (字段名)  from  表名;

3avg 函数  使用

Select avg(字段名) from 表名;

4max 函数  使用

Select max(字段名)from 表名;

5min  函数 使用

Select min(字段名) from 表名;

 46.索引:

(1)Create table 表名 (字段名1 类型(宽度) [完整性约束]

字段名2 类型(宽度) [完整性约束])

Unique/fulltext/spatial/   index|key [别名] (字段名1));

Unique/fulltext/spatial/   index|key  [别名] (字段名,类型(宽度)   asc|descs )

 三者选一              二者选一

  (2)在已存在的表上创建索引

Create  [Unique |fulltext|spatial]  index索引名  on 表名(字段名[(宽度)] [asc|desc]

Alter table 表名 add [Unique |fulltext|spatial] index 索引名 (字段[长度][asc|desc])

      (3)删除索引:alter table 表名 drop index 索引名

普通索引:index(字段)

唯一索引:unique  index  unique_id(id)

全文索引:只能创建在char  varhcar text 类型的字段上

多列索引:在表中的多个字段上创建索引,只有在查询条件中使用了这些字段之中的第一字段时,该索引才会被使用。

 Show  create table  表名\G   \G将每个字段打印按行打印出来

查看表的结构

查看索引是否被使用

从上述执行结果可以看书,possible_keyskey的值都为id,说明id索引已经存在了,开始被使用了。

 

注意:索引字段最好不要为NULL,因为NULL会使索引、索引统计和值更加复杂,并且需要额外一个字节的存储空间

47.事务

    1)事务的特征:原子性(Atomicity,一致性(Consistency),隔离性(Isolation,持久性(Durability,俗称ACID准则。

    原子性:指一个事务必须被视为一个不可分割的最小工作单元,只有事务中所有的数据库操作都执行成功,才算整个事务执行成功了,事务中如果有任何一个SQL语句执行失败,已经执行成功的SQL语句也必须撤销,数据库的状态退回到执行事务前的状态。

    一致性:指事务将数据库从一种状态转变为下一种一致的状态。一旦所有事务动作完成, 事务就被提交. 数据和资源就处于一种满足业务规则的一致性状态中.例如:在表中有一个字段为姓名,具有唯一约束,即姓名不能重复,如果有一个事务对姓名进行了修改,使姓名变得不唯一了,这就破坏了事务的一致性要求,如果事务的某个动作失败了,系统可以自动撤销事务,返回初始化状态。

    隔离性:数据库为每一个用户开启的事务,不能被其他事务得操作所干扰,多个并发事务之间要相互隔离。

    持久性:事务一旦提交,其所做的修改就会永久的保存到数据库中,即使发生故障也不应该对其有任何影响。

    2)事务的隔离级别

          事务的并发问题  脏读      不可重复读  幻读

         1.read uncommitted

         读未提交,是事务中最低的级别,该级别下的事务可以读取到另一个事务中未提交的数据,也被称为脏读。

         2.read commtied

         读提交,该级别下的事务只能读取其他事务已提交的内容,可以避免脏读,但不能避免重复读和幻读的情况

        3.repeatable read

          可重复读,是mysql默认的事务隔离级别,它可以避免脏读和和不可重复读(读提交)的问题,确保同一事务的多个实例              在并发读取数据时,会看到同样的数据行。在事务内重复读取了读取了别的线程已提交的数据,但两次读取的结果不一  致,      原因是查询过程中其他事物做了更新操作 

          幻读: 当一个事务A读取几行记录后,另一个并发事务B插入了一条记录时,幻读就发生了,在后来的查询中,第一个事务A就会发现一些原来没有额外记录。不过mysql的存储引擎通过多版本并发控制机制解决了该问题,因此该级别是可以避免幻读的

          4.serializable

          可串行化,是事务的最高隔离级别,他会强制对事务进行排序,使之不会发生冲突,从而解决脏读、幻读、重复读的问题。实际上,就是在每个读的数据行上加锁。这个级别,可能导致大量的超时和锁竞争,实际应用中很少。

          

3)事务隔离级别设置

     Set  session  transaction  isolation level  隔离级别

48.视图:

 1)概述:从一个或多个表导出来的表,它是一种虚拟存在的表,并且表的结构和数据都依赖基本表。通过视图不仅可以看到存放在基本表中的数据,并且还可以像操作基本表一样,对视图中存放的数据进行查询、修改和删除。

  2)创建视图

      Create  [or replace]  view  view_name[ (column_list)]  as select _statement

  3)查看视图

      Desc 视图名称      查看视图的字段信息

      Show table  status  like  ‘视图’  查看视图的基本信息

  4)修改视图

      当基本表中的某些字段发生变化时,可以通过修改视图的方式来保持视图和基本表的一致性。

      Create  [or replace]  view  view_name[ (column_list)]  as select _statement

                                         可修改视图的列  as后的查询语句

      Alter  view  view_name[ (column_list)]  as select _statement

可修改视图的列  as后的查询语

 

   5)更新视图

      如果对视图中的数据进行增加或删除操作时,实际上就是对其基本中的数据进行增加或者删除操作。

   6)删除视图

       Drop view [if exists] view_name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值