Mysql数据库基本操作

1.启动与停止sql服务

启动服务

 net start mysql

停止服务

 net stop mysql

dos条件下打开MySQL

mysql -u root -p #root为默认用户名

2. 数据库与数据表基本操作

2.1库操作

选库语句

use test

查看库

show databeses

创建库

create databese 数据库名[charset 字符集]

删除库

drop databese 数据库名

2.2表操作

选择表

show tables

删除表

drop table 表名

修改表名

rename table oldname to newname

清空表

truncate 表名

注:Truncate和delete是有区别的,在于truncate相当于删表再重建一张同样结构的表,操作后得到一张全新表,而delete是从删除所有的层面来操作的.Trucate相当于把旧的学籍表扔了重画一张, Delete相当于用橡皮把学籍表的数据库擦掉.如果决定全清空的下,truncate速度更快一些。

创建表

 CREATE TABLE 数据表名 (字段名 字段类型)
  • 示例
CREATE TABLE `runoob_tbl`( 
        `runoob_id` INT UNSIGNED AUTO_INCREMENT, 
        `runoob_title` VARCHAR(100) NOT NULL, 
        `runoob_author` VARCHAR(40) NOT NULL, 
        `submission_date` DATE,
         PRIMARY KEY ( `runoob_id` ) )ENGINE=InnoDB DEFAULTCHARSET=utf8;

查看表结构

desc table Name

3、修改表的语法

增加列数据

alter table 表名 add 列名称.列类型.列参数 after 某列(那一列的后面,第一列为first

插入数据

 INSERT INTO table_name ( field1, field2,...fieldN )
                           VALUES
                           ( value1, value2,...valueN );
  • 示例
 INSERT INTO runoob_tbl
    -> (runoob_title, runoob_author, submission_date)
    -> VALUES
    -> ("学习 MySQL", "教程", NOW());

删除列

alter table 表名 drop 列名

修改列参数类型

alter table 表名 modify 新的列名/新参数 

修改列名及类型

alter table 表名 change 旧列名.新列名,新参数

4、删除与更新表内的数据

4.1DELETE 语句

DELETE FROM table_name [WHERE Clause]

要点:
如果没有指定 WHERE 子句
MySQL 表中的所有记录将被删除
可以在 WHERE 子句中指定任何条件
可以在单个表中一次性删除记录

  • 示例:
    删除 runoob_tbl 表中 runoob_id 为3 的记录:
DELETE FROM runoob_tbl WHERE runoob_id=3;
   Query OK, 1 row affected (0.23 sec)

4.2 UPDATE 更新

修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作。

 UPDATE table_name SET field1=new-value1, field2=new-value2
    [WHERE Clause]

要点
你可以同时更新一个或多个字段
你可以在 WHERE 子句中指定任何条件
你可以在一个单独表中同时更新数据

  • 示例

更新数据表中 runoob_id 为 3 的 runoob_title 字段值:

UPDATE runoob_tbl SET runoob_title='学习 C++' WHERE runoob_id=3;

5、查询数据

where 条件查询
group by 分组查询
having 筛选
order by 排序
limit 限制条件条数
##五种查询同时存在必须以此为序

5.1where 条件查询

查询模型

select 列名 from 表名 where 条件

要点
把where当作是if判断表达式
把列看成变量,每一行上列的值都在变化,因为列的变量可以运算
where对表发挥作用查询出数据,但查询的出的结果不能发挥作用,需要用到where
可以使用 AND 或者 OR 指定一个或多个条件

从命令提示符中读取数据

SELECT * from runoob_tbl WHERE runoob_author='教程';

查出一张表的所有行,所有列

Select * from tableName;

查出一张表的所有行,部分列.

Select id,name,salary from tableName

查出一张表的所有列,部分行(id >=2 的行)

Select * from tableName where id >=2;

where like 子句

SELECT field1, field2,...fieldN
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'

要点:
可以在 WHERE 子句中指定任何条件。
可以在 WHERE 子句中使用LIKE子句。
可以使用LIKE子句代替等号 =。
LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
你可以使用 AND 或者 OR 指定一个或多个条件。
你可以在 DELETE 或 UPDATE 命令中使用 WHERE…LIKE 子句来指定条件

  • 示例
    runoob_tbl 表中获取 runoob_author 字段中以 COM 为结尾的的所有记录:
SELECT * from runoob_tbl WHERE runoob_author LIKE '%COM';

5.2 union操作符

MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

参数:
expression1, expression2, … expression_n: 要检索的列。
tables: 要检索的数据表。
WHERE conditions: 可选, 检索条件。
DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
ALL: 可选,返回所有结果集,包含重复数据。

5.3 GROUP BY 语句(分类分组)

GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

5.4 order by 排序

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]

要点:
你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果
你可以设定多个字段来排序
你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列
你可以添加 WHERE…LIKE 子句来设置条件

5.5子查询

where子查询:指把内层查询的结果作为外层查询的比较条件.
如果 where 列=(内层sql),则内层sql返回的必是单行单列,单个值
如果 where 列 in (内层sql), 则内层sql只返回单列,可以多行
From 型子查询: 把内层的查询结果当成临时表,供外层sql再次查询
实例
从products表中选出最便宜的5种商品,5种商品价格从高到低排序

select * from (select * from products order by prod_price limit 5) as temp order by prod_price desc

Exists子查询 : 把外层的查询结果,拿到内层,看内层的查询是否成立。如果内层的sql成立,则该行取出。内层查询是exists后的查询

select * from table1Name
where exists (select * from table2Name where ..)

5.6 JOIN连接的使用

JOIN 按照功能大致分为如下三类:
INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
左右连接是可以互换的
A left join B, 就等价于 B right join A
注意:既然左右连接可以互换,尽量用左连接,出于移植时兼容性方面的考虑(内连接的特点
两表交集
在这里插入图片描述
在这里插入图片描述

6、SQL函数

6.1数学函数

在这里插入图片描述

6.2聚合函数

在这里插入图片描述

6.3字符串函数

在这里插入图片描述

6.4日期及时间函数

在这里插入图片描述

6.5 高级函数

在这里插入图片描述

7、异常处理与其他

NULL值处理

  • IS NULL: 当列的值是 NULL,此运算符返回 true。
  • IS NOT NULL: 当列的值不为 NULL, 运算符返回true。
  • <=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。

索引

  • 建立索引
Alter table 表名 add index /unique/fulltext [索引名] (列名) Altertable 表名 add primary key (列名)

// 不要加索引名,因为主键只有一个

  • 删除索引

删除非主键索引:

Alter table 表名 drop index 索引名;  

删除主键:

alter table 表名 drop primary key

临时表

TEMPORARY
CREATE TEMPORARY TABLE 表名()

MySQL 复制表

  • 使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等。
  • 复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构。
  • 如果你想复制表的内容,你就可以使用INSERT INTO … SELECT 语句来实现。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值