mysql命令、语法

第一部分:mysql

一、安装

1、复制my-default.ini到my.ini,编辑my.ini文件

# These are commonly set, remove the # and set as required.
 basedir = D:\SoftAnZhuang\mysql-5.6.21-winx64
 datadir =D:\SoftAnZhuang\mysql-5.6.21-winx64\data
 port = 3306
# server_id = .....

2、安装

管理员模式启动cmd,进入mysql的bin目录

mysqld install #回车运行

 

145332_gogh_2874009.png

3、启动: net start mysql

145419_dq0w_2874009.png

4、连接

mysql -uroot -p

4、停止

net stop mysql

二、操作

一些重要的命令:

  • select- 从数据库中提取数据
  • update- 更新数据库中的数据
  • delete- 从数据库中删除数据
  • insert into- 向数据库中插入新数据
  • create database- 创建新数据库
  • alter database - 修改数据库
  • create table - 创建新表
  • alter table - 变更(改变)数据库表
  • drop table - 删除表
  • create index- 创建索引(搜索键)
  • drop index - 删除索引

1、查看所有数据库

show databases;

145901_gRgm_2874009.png

2、使用某个数据库:  use 数据库名

use report;

145935_4A9G_2874009.png

3、显示列中不重复的值,比如想显示出area这一列中的值,重复的只显示一次。

这时候要用到 distinct

151808_8rD9_2874009.png

例:select distinct area from people;

152050_6npj_2874009.png

4、where: 用于过滤

WHERE 子句中的运算符

运算符描述
=等于
<>不等于。
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围内
LIKE搜索某种模式
IN指定针对某个列的多个可能值

SQL 对大小写不敏感:SELECT 与 select 是相同的。

           in的语法:

select id,age from people where age in (23,24);

152437_i1k8_2874009.png

           like 的语法:

select name from people where name like "%i%";

152747_ZgJ4_2874009.png

           between的语法:

select id,age from people where age between 20 and 23;

153214_lTkh_2874009.png

not between 1 and 2;

5、and 和or运算符

6、order by

ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。

语法:

SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;

例:select name,age from people order by age desc;

   154515_gYuh_2874009.png

7、insert into

向表里插入记录:

INSERT INTO table_name VALUES (value1,value2,value3,...);

INSERT INTO table_name (column1,column2,column3,...)  VALUES (value1,value2,value3,...); 

例:

insert into people(name,area) values("lin","english");

155026_eUCE_2874009.png

8、update

UPDATE table_name SET column1=value1  WHERE some_column=some_value;

9、delete

DELETE 语句用于删除表中的记录。

DELETE FROM table_name WHERE some_column=some_value;

可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:

DELETE * FROM table_name 

删除和更新的时候要注意where语句,不然操作的是表中全部的数据。

10 、limit

limit 子句用于规定要返回的记录的数目。limit子句对于拥有数千条记录的大型表来说,是非常有用的。

11、别名 as 

SELECT column_name AS alias_name FROM table_name;

SELECT column_name(s)  FROM table_name AS alias_name;

在下面的情况下,使用别名很有用:

  • 在查询中涉及超过一个表
  • 在查询中使用了函数
  • 列名称很长或者可读性差
  • 需要把两个列或者多个列结合在一起

   12、join

SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。

  •  

161130_Tk6p_2874009.png

INNER JOIN:如果表中有至少一个匹配,则返回行

select a.*,b.* from people as a inner join scores as b on a.id =b.id;

162401_GgGl_2874009.png

LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行

SQL LEFT JOIN

select a.*,b.* from people as a left join scores as b on a.id =b.score;

162119_FuJE_2874009.png

 

RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行

SQL RIGHT JOIN

select a.*,b.* from people as a right join scores as b on a.id =b.score;

162234_VsoU_2874009.png

FULL JOIN:只要其中一个表中存在匹配,则返回行

SQL FULL OUTER JOIN

select a.*,b.* from people as a full join scores as b on a.id =b.id;

13、union

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;

SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;

例:select name from people union select name from scores;

把两张表的name字段的值合并在一起了。

163112_1Zh3_2874009.png

14、select into 复制旧表内容到新表

可以从一个表复制信息到另一个表。SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

CREATE TABLE 新表 SELECT * FROM 旧表

例:create table student select *from people;

163531_NtZr_2874009.png

15、 INSERT INTO SELECT复制表中数据,插入到另一张已经存在的表

INSERT INTO table2(column_name(s)) SELECT column_name(s) FROM table1;

insert into scores(name) select name from people;

16、 约束(Constraints)

在 SQL 中,我们有如下约束:

  • not null  - 指示某列不能存储 NULL 值。
  • unique- 保证某列的每行必须有唯一的值。
  • primary key- NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • foreign key - 保证一个表中的数据匹配另一个表中的值的参照完整性。
  • check - 保证列中的值符合指定的条件。
  • default - 规定没有给列赋值时的默认值。

17、创建索引 :CREATE INDEX 

CREATE INDEX 语句用于在表中创建索引。在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

CREATE INDEX index_name ON table_name (column_name)

18、 drop

删除索引:DROP INDEX index_name ON table_name

删除表:DROP TABLE table_name

删除数据库:DROP DATABASE database_name

19、ALTER 

ALTER TABLE 语句用于在已有的表中添加、删除或修改列。

表中添加列:ALTER TABLE table_name ADD column_name datatype

表中删除列:ALTER TABLE table_name DROP COLUMN column_name

改变表中列的数据类型:ALTER TABLE table_name ALTER COLUMN column_name datatype

20、自增长:AUTO INCREMENT

CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)

21、视图:Views

视图是基于 SQL 语句的结果集的可视化的表。

CREATE VIEW view_name AS SELECT column_name(s)FROM table_name WHERE condition

create view vs as select id,name from people ;

SELECT * FROM vs ;

172452_ucvf_2874009.png

更新视图:

CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

撤销视图:

DROP VIEW view_name

22、null值

NULL 值代表遗漏的未知数据。

无法使用比较运算符来测试 NULL 值,比如 =、< 或 <>。我们必须使用 IS NULL 和 IS NOT NULL 操作符。

例:select *from people where age is null;

090435_RUoD_2874009.png

23、GROUP BY

GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

select name,sum(age) from people group by name;

091427_2QXc_2874009.png

14、导出数据

SELECT * FROM runoob_tbl -> INTO OUTFILE '/tmp/tutorials.txt';
 mysqldump -u root -p database_name table_name > dump.txt
password *****
如果你需要将数据拷贝至其他的 MySQL 服务器上, 你可以在 mysqldump 命令中指定数据库名及数据表。
在源主机上执行命令,将数据备份至 dump.txt 文件中:
mysql -u root -p database_name < dump.txt
password *****
如果完整备份数据库,则无需使用特定的表名称。
如果你需要将备份的数据库导入到MySQL服务器中,可以使用命令,使用以下命令你需要确认数据库已经创建:
mysqldump -u root -p database_name \
       | mysql -h other-host.com database_name

可以使用命令将导出的数据直接导入到远程的服务器上,但请确保两台服务器是相通的,是可以相互访问的

15、导入数据

从文件 dump.txt 中将数据导入到 mytbl 数据表中, 可以使用以下命令:

mysqlimport -u root -p --local database_name dump.txt
password *****

 

转载于:https://my.oschina.net/u/2874009/blog/784868

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值