MYSQL --- 1

作者: 2023开始学 | 来源:发表于2018-12-23 13:13 被阅读10次

1、登录:-h localhost -u root -p root

2、mysql命令行有两种方式结尾: 分号(;) 和 \g
注意: \g 与前面的命令中间有空格,否则会报错,如下图。


image image

数据库

1、创建数据库:create database 数据库名; 例: create database info;
说明:创建数据库前先判断是否存在该数据库的语句:
create database if not exists info default charset utf8 collate utf8_general_ci;

2、删除数据库:drop database 数据库名; 例: drop database info;

实例:从下图中可以看出,中间的 database 一定要带上。

image

数据表

1、创建基本表: create table 表名(<表名> < 数据类型>);

查看创建表的语句: show create table 表名;

说明: 在创建数据表时,常常指定数据引擎以及字符集类型,如:Engine=InnoDB DEFAULT CHARSET=utf8;
创建数据表的语句和查看创建表时的语句:


image

2、删除基本表:drop table 表名; truncate table 表名;delete from 表名 [where 子句];

实例:

truncate 表名; 表结构仍然存在。


image

delete from 表名 where clause ; 表结构仍然存在。

image

drop table 表名; 再次查看表时会报错,提示表不存在

image

3、修改基本表:使用Alter table语句修改基本表

语法:
Alter table 表名
新 增 字 段: Add column <新列名> <数据类型> [ 完整性约束]

删 除 字 段: Drop column <列名>

修改字段类型: Alter column <列名> <数据类型>

说明:

a. 新增字段 add 和 删除字段 drop 语句中的column 是可选的,可带,可不带。
b. 修改字段 modify, change,alter

Modify:只修改字段类型,不能修改字段名称.
语法: alter table 表名 modify 字段名称 字段类型 [约束]; alter table student modify dizhi text;

Change : 可选择是否修改字段类型和字段名称.
change关键字后,要修改的字段名,新字段名及新数据类型,这三项缺一不可。
由于三项必须填写,如果不想修改字段类型和字段名称,那么在新字段名称和新字段类型的位置仍写原字段名称或字段类型。

语法: alter table 表名 change 字段名称 新字段名称 新字段类型; alter table student change i j bigint;


Alter :只能添加、删除默认值,不能修改字段类型,不能修改字段名称。添加默认值时一定要加上关键字set。

修改字段默认值 : Alter table student alter i set default 1000;

删除字段默认值: Alter table student alter i drop default;

c. 指定新增字段的位置:first 关键字(设定为第一列)和after关键字(设定位于某个字段之后),这两个关键字只作用于ADD子句。

新增字段:


image

删除字段:


image

添加默认值:


image

4、修改表名

Alter table 原表名 rename to 新表名;


image

查看数据库、数据表

1、使用数据库、选择数据库:use 数据库名;

注意:创建和删除数据库、数据表时,中间都要带上database、table,而选择数据库时没有带database.

2、查看有哪些数据库: show databases; 注:结尾要带s
3、当前数据库下有哪些数据表:show tables; 注:结尾有s
image
4、查看表结构:desc 表名;或 describe 表名; 简写/全写两种方式均可 或 show columns from 表名;
image
5、查看某个数据库下所有表的类型、状态: show table status from 数据库名 [ like 'pattern' ];

like ' pattern ' 表示查询哪些表的具体表名。

a. show table status from try; 查询 try 数据库下所有表的信息。


image

b. 查看数据库 try 下 student 表中的信息。


image
6、查看创建数据表的语句: show create table 表名;
image

表数据操作

1、向表中插入数据

a. insert into 表名 [(field1, field2 …… field n)] values (value1, value2 …… value n);

说明: 如果INTO子句没有指明(或列出)任何列名,则新插入的元组必须在每个属性列上均有值。

如果指出了新增加的元组在哪些属性列上要赋值,属性的顺序可以与CREATE TABLE中的顺序不一样。

b. 另一种方法: 也称为复制另一张表数据
insert into ……select 子句

2、更新表数据:

update 表名 set field1=values1, field2 = values2 [where clause];

insert into 与 update的区别:insert into 是插入一条新记录,update是在原来表的数据上进行更新、修改。

3、Group by子句

Group by子句将查询结果按某一列或多列的值分组,值相等的为一组。

对查询结果分组的目的是为了细化聚集函数的作用对象。如果未对查询结果分组,聚集函数将作用于整个查询结果。分组后聚集函数将作用于每一个组,即每一组都有一个函数值。

Having短语:如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则使用having短语指定筛选条件。

说明:

 where子句与having短语的区别:在于作用对象不同。
      where子句:作用于基本表或视图,从中选择满足条件的元组。
      having短语:作用于组,从中选择满足条件的组。

4、Join的使用

在真正的应用中经常需要从多个数据表中读取数据,因此在mysql中使用Join来联合多表查询。

JOIN按照功能大致分为如下四类:

a. Inner join (内连接,或等值连接,可以省略Inner,效果一样):获取两个表中字段匹配关系的记录。

b. Left join(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

c. Right join(右连接):获取右表所有记录,即使左表没有对应匹配的记录。

d. Full join (全连接):只要左表和右表其中一个表中存在匹配,则返回行。full join结合了left join 和 right join的结果。

5、Union操作符

功能:用于连接两个以上的select语句的结果,使其组合到一个结果集中。
语法:

                SELECT expression1, expression2, ... expression_n

                FROM tables

                [WHERE conditions]

                UNION [ALL | DISTINCT]

                SELECT expression1, expression2, ... expression_n

                 FROM tables

               [WHERE conditions];

  说明: a.  可以只检索其中几个字段,并不是所有字段。

        b.   Distinct是默认选项,即省略关键字情况下Union操作符删除了重复的数据。  
             All, 返回所有结果集,包含重复数据。

6、去重操作

   a. distinct 关键字:select  distinct  age  from  person;

   b. group by : select age from person  group by age;

7、聚集函数(Aggregate functions)

   count( [ distinct | all ]  * )              统计元组个数

   count( [ distinct | all ]   <列名> )         统计一列中值的个数

   sum( [ distinct | all ] <列名>)              计算一列值的总和(此列必须是数值型)

   avg( [ distinct | all ] <列名>)              计算一列值的平均值(此列必须是数值型)

   max( [ distinct | all ]  <列名>)             求一列值中的最大值

   min( [ distinct | all ]  <列名>)             求一列值中的最小值

   说明:   where子句中是不能使用聚集函数作为条件表达式的。

8、常用的查询条件

      比      较: =,>,<,>=,<=,!=,<>,!>,!<    (不等于两种形式: !=  和  <>)

      确定范围: between and, not between and

      确定集合: In,  Not  in

      字符匹配:Like ,  Not Like   

      空       值: Is Null,  Is not null

      多重条件(逻辑运算):And, Or,  Not

说明:
a. 通配符: %(百分号):任意长度的字符串。 _(下划线):任意单个字符。
b.如果匹配串中不含通配符,like效果类似于=(等于); not like类似于 != 或 <> (不等于)
c. 处理NULL值时不能使用 = NULL 或 !=NULL, 需要使用IS NULL和 IS NOT NULL运算符。
d.不能比较NULL 和 0,它们不是等价的。

9、为表名或列名指定别名(Alias):select name as a from student as b;

10、Select语句的一般格式

     SELECT [ ALL | DISTINCT ] <目标列表达式> [ 别名 ]  [ , <目标列表达式> [ 别名 ] ]

     FROM < 表名或视图名 > [ 别名 ] [ , < 表名或视图名 > [ 别名 ] ] ……

     WHERE <条件表达式>

     GROUP BY <列名1>  HAVING <条件表达式>

     ORDER BY  <列名2>  [ ASC | DESC ]

    注: 几个关键字的使用顺序: where,  group by ,  having,  order by

11、在mysql中,字符串要用单引号(英文符号)括起来。

相关文章

网友评论

    本文标题:MYSQL --- 1

    本文链接:https://www.haomeiwen.com/subject/safnkqtx.html