一、连接MySQL
格式: mysql -h主机地址 -u用户名 -p用户密码
1、例1:连接到本机上的MYSQL。(mysql-uroot-p12344)
首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql<。
2、例2:连接到远程主机上的MYSQL。( mysql -h10.20.0.88-uroot-p12344 )
假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -uroot -pabcd123
(注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令: exit (回车)。
二,服务命令
1.linux下启动mysql的命令:
mysqladmin start
/ect/init.d/mysql start (前面为mysql的安装路径)
2.linux下重启mysql的命令:
mysqladmin restart
/ect/init.d/mysql restart (前面为mysql的安装路径)
3.linux下关闭mysql的命令:
mysqladmin -u root -p密码 shutdown
/ect/init.d/mysql shutdown (前面为mysql的安装路径)
4.连接本机上的mysql:
进入目录mysql\bin,再键入命令mysql -uroot -p, 回车后提示输入密码。
退出mysql命令:exit(回车)
5.修改mysql密码:
mysqladmin -u用户名 -p旧密码 password 新密码
或进入mysql命令行SET PASSWORD FOR '用户名'@'主机' = PASSWORD(‘密码');
GRANT USAGE ON *.* TO '用户名'@'主机' IDENTIFIED BY 'biscuit';
修改自己的密码SET PASSWORD = PASSWORD('biscuit');
6.增加新用户。(注意:mysql环境中的命令后面都带一个分号作为命令结束符)
grant all privileges on *.* to 用户名@'%' identified by '密码' with grant option;
flush privileges;(刷新权限设置)
grant select on 数据库.* to 用户名@登录主机 identified by "密码"
如增加一个用户test密码为123,让他可以在任何主机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令:
grant select,insert,update,delete on *.* to " Identified by "123";
7.跳过授权访问mysql
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
三、有关mysql数据库和表操作
必须首先登录到mysql中,有关操作都是在mysql的提示符下进行,而且每个命令以分号结束
1、显示数据库列表。
show databases;
2、建数据库:
create database 库名;
3、建表:
use mysql; //打开库
create table 表名(字段设定列表);
4,增删表列
(1)添加单列
ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]
例如:ALTER TABLE users1 ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10;
在 id 后面添加 username属性:ALTER TABLE users1 ADD password VARCHAR(32) NOT NULL AFTER username;
(2)添加多列
ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...)
(3)删除列
ALTER TABLE tbl_name DROP [COLUMN] col_name
例如:ALTER TABLE users1 DROP truename;
(4)一次删除多列:
ALTER TABLE uses1 DROP password,DROP age;
也能删除一列的同时,新增一列。其间用逗号隔开。
5,修改列约束
(5)添加主键约束:
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] PRIMARY KEY[index_type] (col_name);
(6)添加唯一约束
ALTER TABLE tbl_name ADD UNIQUE(col_name);
(7)添加外键约束
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_type](外键列) REFERENCES 父类(参考列);
(8)删除主键约束
ALTER TABLE table_name DROP PRIMARY KEY;
(9)删除唯一约束
ALTER TABLE table_name DROP {INDEX|KEY} index_name;
(10)删除外键约束
ALTER TABLE table_name DROP FOREIGN KEY fk_symbol;
(11)添加/删除默认约束:
ALTER TABLE table_name ALTER [COLUMN] column_name SET DEFAULT literal
ALTER TABLE table_name ALTER [COLUMN] column_name DROP DEFAULT
6,修改列定义
(1)修改列定义
ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST |AFTER col_name];
(2)修改列名称
ALTER TABLE tbl_name CHANGE [COLUMN] col_name new_col_name column_definition [FIRST|AFTER col_name];
(3)数据表更名
7,修改数据表名
ALTER TABLE tbl_name RENAME [TO/AS] new_tbl_name
9,显示创建表和索引
显示创建表的语句:SHOW CREATE TABLE table_name;
查看表是否有索引:SHOW INDEXS FROM table_name;
10、显示库中的数据表
show tables;
11、显示数据表的结构
describe 表名;(desc)
SHOW COLUMNS FROM 表名;
12、删库和删表
drop database 库名;
drop table 表名;
13,显示所属的数据库
SELECT DATABASE();
14、编码的修改
如果要改变整个mysql的编码格式:
启动mysql的时候,mysqld_safe命令行加入
--default-character-set=gbk
如果要改变某个库的编码格式:在mysql提示符后输入命令
alter database db_name default character set gbk;
四、有关mysql记录操作
四种基本操作:
操作 | 说明 |
INSERT | 第一种: INSERT [INTO] tb1_name [(col_name,...)] VALUES(val,...),(val1,...); //INSERT 关键字,INTO 可省略,tb1_name 数据表的名称 当字段有自动增加的属性后,在插入表的所有字段的数据时,可以填写 NULL 或 DEFAULT 这两个关键字,表示按照原先默认自动增长的属性 第二种: INSERT [INTO] tb1_name SET col_name={expr|DEFAULT},…… 只能一次性插入一条记录 第三种: insert table_name [(colname...)] select..... 把查询到的结果插入到指定数据表中 |
UPDATE | update <表名> |
DELETE | 1、删除记录DELETE:分为单表删除和多表删除 |
SELECT | SELECT select_expr [,select expr2...] 只查找某一个函数或表达式 使用[AS] alias_name为其赋予别名 []都可以省略,如select version(); SELECT * FROM tdb_goods\G; // 网格形式输出查询结果 |
条件:
条件 | 说明 |
WHERE | 在WHERE表达式中,可以使用MySQL支持的函数或运算符 |
GROUP BY | 查询结果分组: |
HAVING | 利用GROUP BY 分组 添加分组条件 [HAVING where_condition],HAVING的字段要么在select中出现,要么是聚合函数(只有一个结果),如count(id) > 1; SELECT sex FROM users GROUP BY 1 HAVING age > 35; //有错 SELECT sex FROM users GROUP BY 1 HAVING count(id) >= 2;
|
ORDER BY | 对查询结果进行排序,默认是升序 |
LIMIT | 1、限制查询结果返回的数量:[LIMIT {[offset,] row_count|row_count OFFSET offset}] |
五,约束
约束名 | 说明 |
UNSIGNED | 无符号 |
空值与非空 | NULL,字段值可以为空 NOT NULL,字段值禁止为空,不赋值会报错 |
AUTO_INCREMENT | 自动编号,且必须与主键配合使用,保证记录的唯一性,类型必须为整型(可以是FLOAT(5,0)等,小数点后必须为0),默认情况下。起始值为1,每次的增量为1 |
PRIMARY KEY(KEY) | 主键约束 主键保证记录的唯一性 |
UNIQUE KEY | 唯一约束 唯一约束可以保证记录的唯一性 |
DEFAULT | 默认约束 默认值 |
FOREIGN KEY | 外键约束 保持数据一致性,完整性;实现一对一或一对多关系。 要求: 父表和子表必须使用相同的存储引擎,而且禁止使用临时表; 数据表的存储引擎只能为InnoDB; 外键列和参照列必须具有类似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同; 外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。 在 MY.ini 文件中编辑默认的存储引擎:default-storage-engine=INNODB; 外键约束的参照操作: 1. CASCADE: 从父表删除或更新且自动删除或更新子表中匹配的行。 如:FOREIGN KEY (key_name) REFERENCEES table_name (key_name) ON DELETE CASCADE; ON DELETE \ ON UPDATE 2. SET NULL: 从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL。 3. RESTRICT: 拒绝对父表的删除或者更新操作。 4. NO ACTION: 标准SQL的关键字,在MySQL中与RESTRICT相同。 |
1.表级约束与列级约束
(1)对一个数据列建立的约束,称为列级约束
(2)对多个数据列建立的约束,称为表级约束
(3)列级约束既可以在列定义时声明,也可以在列定以后声明
(4)表级约束只能在列定义后声明
2.主键、外键、非空、唯一、check,default都是约束条件。主键、外键、既可以作为表级约束,也可作为列级约束
而像非空、唯一等( not null, default )只有列级约束
六、数据的导入导出
从本地文件load数据到表(LOAD DATA语句中指出列值的分隔符和行尾标记,但是默认标记是定位符和换行符)
LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
LINES TERMINATED BY '\r\n';
1,mysqldump的几种常用方法
(1)导出整个数据库(包括数据库中的数据)
mysqldump -u username -p dbname > dbname.sql
(2)导出数据库结构(不含数据)
mysqldump -u username -p -d dbname > dbname.sql
(3)导出数据库中的某张数据表(包含数据)
mysqldump -u username -p dbname tablename > tablename.sql
(4)导出数据库中的某张数据表的表结构(不含数据)
mysqldump -u username -p -d dbname tablename > tablename.sql
2,导入数据库
1、首先建空数据库
mysql>create database abc;
2、导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;
方法二:
mysqldump -u username -p -d dbname tablename > tablename.sql
#mysql -uroot -p123456 ps_se_sample_platform < experiment.sql
七,权限设置
设置用户独有的使用权限,your_mysql_name用户名,your_client_host主机名
GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host';
八,mysql常用维护命令
1、show global status;列出MySQL服务器运行各种状态值
2、show variables;查询MySQL服务器配置信息语句
3、查看慢查询
show variables like '%slow%';
show global status like '%slow%';
4、最大连接数
show variables like 'max_connections';MySQL服务器最大连接数
show global status like 'Max_used_connections'; 服务器响应的最大连接数
5、查看表结构
desc Tablename;
describe Tablename;
show columns from Tablename;
show create table Tablename;