MySQL的基本命令
- 格式:doc
- 大小:39.50 KB
- 文档页数:4
常用的mysql语句一、创建表的语句1. 创建一个名为student的表,包含id、name、age三个字段,其中id为主键,自增长:CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20),age INT);2. 创建一个名为teacher的表,包含id、name、salary三个字段,其中id为主键,自增长:CREATE TABLE teacher(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20),salary INT);3. 创建一个名为course的表,包含id、name、teacher_id三个字段,其中id为主键,自增长,teacher_id为外键,参考teacher 表的id字段:CREATE TABLE course(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20),teacher_id INT,FOREIGN KEY (teacher_id) REFERENCES teacher(id));二、插入数据的语句1. 向student表中插入一条数据,id为1,name为Tom,age为18:INSERT INTO student (id, name, age) VALUES (1, 'Tom', 18);2. 向teacher表中插入一条数据,id为1,name为John,salary 为5000:INSERT INTO teacher (id, name, salary) VALUES (1, 'John', 5000);3. 向course表中插入一条数据,id为1,name为Math,teacher_id为1:INSERT INTO course (id, name, teacher_id) VALUES (1, 'Math', 1);三、查询数据的语句1. 查询student表中所有的数据:SELECT * FROM student;2. 查询teacher表中所有salary大于4000的数据:SELECT * FROM teacher WHERE salary > 4000;3. 查询course表中所有的数据,同时查询出对应的教师姓名:SELECT course.id, , FROM course INNER JOIN teacher ON course.teacher_id = teacher.id;四、更新数据的语句1. 将student表中id为1的记录的age更新为20:UPDATE student SET age = 20 WHERE id = 1;2. 将teacher表中salary大于4000的记录的salary都增加500:UPDATE teacher SET salary = salary + 500 WHERE salary > 4000;3. 将course表中name为Math的记录的teacher_id改为2:UPDATE course SET teacher_id = 2 WHERE name = 'Math';五、删除数据的语句1. 删除student表中id为1的记录:DELETE FROM student WHERE id = 1;2. 删除teacher表中salary小于4000的记录:DELETE FROM teacher WHERE salary < 4000;3. 删除course表中name为English的记录:DELETE FROM course WHERE name = 'English';六、聚合函数的语句1. 计算student表中age的平均值:SELECT AVG(age) FROM student;2. 计算teacher表中salary的最大值:SELECT MAX(salary) FROM teacher;3. 统计course表中每个教师的课程数量:SELECT , COUNT(*) FROM course INNER JOINteacher ON course.teacher_id = teacher.id GROUP BY ;七、事务处理的语句1. 开启一个事务:START TRANSACTION;2. 执行一系列修改操作:UPDATE student SET age = age + 1 WHERE id = 1;UPDATE teacher SET salary = salary - 1000 WHERE id = 1;3. 提交事务:COMMIT;4. 回滚事务:ROLLBACK;以上就是常用的mysql语句,涵盖了创建表、插入数据、查询数据、更新数据、删除数据、聚合函数和事务处理等方面的操作,可以满足日常开发中的需求。
mysql命令参数MySQL是一个开源的关系型数据库管理系统,提供了丰富的命令和参数供用户进行数据库管理和操作。
下面是一些常用的MySQL命令参数的介绍,总字数超过1200字:1. -h或--host:指定MySQL服务器的主机名或IP地址。
例如,可以使用-h localhost连接到本地的MySQL服务器。
2. -u或--user:指定连接MySQL服务器时使用的用户名。
3. -p或--password:指定连接MySQL服务器时使用的密码。
使用该参数会提示用户输入密码。
4. -P或--port:指定连接MySQL服务器时使用的端口号。
默认情况下,MySQL服务器使用3306端口。
5. -D或--database:指定要使用的数据库。
可以在连接MySQL服务器后使用use命令来切换数据库,也可以使用该参数在连接时直接指定要使用的数据库。
6. -e或--execute:指定要执行的SQL语句。
该参数可用于在命令行中直接执行一条SQL语句。
7. -r或--result-file:指定查询结果的输出文件。
可以使用该参数将查询结果保存到文件中,而不是在命令行中显示。
8. --skip-column-names:在查询结果中不显示列名。
使用该参数可以只显示查询结果的数据部分,而不包含列名。
9. -s或--silent:使命令行工具在执行命令时不输出任何信息。
使用该参数可以使输出更加简洁。
10. -i或--ignore-errors:在执行SQL语句时忽略错误。
默认情况下,如果SQL语句执行出错,命令行工具会停止执行并显示错误信息。
使用该参数可以忽略错误继续执行后续语句。
11. -v或--verbose:显示详细的执行信息。
使用该参数可以在执行命令时显示更多的调试信息,帮助用户进行故障排查。
12. --show-warnings:在执行命令时显示警告信息。
警告信息是一些非致命性的问题,可以使用该参数查看这些警告信息。
mysql detail用法MySQL 是一个流行的关系型数据库管理系统,用于存储、管理和检索数据。
以下是 MySQL 的基本用法和常用命令的详细说明:1. 连接到 MySQL 数据库使用以下命令连接到 MySQL 数据库服务器:```bashmysql -u 用户名 -p```其中,`用户名` 是您要连接到的数据库的用户名。
在输入此命令后,系统会提示您输入密码。
2. 显示所有数据库使用以下命令显示 MySQL 服务器上的所有数据库:```sqlSHOW DATABASES;```3. 选择一个数据库使用以下命令选择要使用的数据库:```sqlUSE 数据库名;```其中,`数据库名` 是您要使用的数据库的名称。
4. 显示数据库中的表使用以下命令显示数据库中的所有表:```sqlSHOW TABLES;```5. 查看表的详细信息使用以下命令查看表的详细信息:```sqlDESCRIBE 表名;```其中,`表名` 是您要查看的表的名称。
此命令将显示表的列信息、数据类型、键和其他属性。
6. 创建新数据库使用以下命令创建一个新数据库:```sqlCREATE DATABASE 数据库名;```其中,`数据库名` 是您要创建的数据库的名称。
7. 删除数据库使用以下命令删除一个数据库:```sqlDROP DATABASE 数据库名;```其中,`数据库名` 是您要删除的数据库的名称。
请注意,此操作将永久删除数据库及其所有数据,请谨慎操作。
8. 创建新表使用以下命令创建一个新表:```sqlCREATE TABLE 表名 (列1 数据类型, 列2 数据类型, ...);```其中,`表名` 是您要创建的表的名称,`列1`、`列2` 等是表的列名,`数据类型` 是列的数据类型(如 INT、VARCHAR 等)。
您可以根据需要指定多个列和相应的数据类型。
9. 删除表使用以下命令删除一个表:```sqlDROP TABLE 表名;```其中,`表名` 是您要删除的表的名称。
mysql命令参数MySQL命令参数详解MySQL作为一种流行的关系型数据库管理系统,其常用的命令参数也是必须掌握的技能之一。
在本文中,我们将详细介绍MySQL的常用命令参数,包括参数的含义、用法以及实际应用场景。
1. -h, --host该参数用于指定MySQL服务器的主机名或IP地址。
例如,可以使用以下命令连接到MySQL服务器:mysql -h localhost -u username -p password其中,localhost表示本地主机,username表示用户名,password表示密码。
2. -P, --port该参数用于指定MySQL服务器的端口号。
默认情况下,MySQL服务器的端口号为3306。
例如,可以使用以下命令连接到MySQL服务器:mysql -h localhost -P 3306 -u username -p password其中,3306表示MySQL服务器的端口号。
3. -u, --user该参数用于指定MySQL服务器的用户名。
例如,可以使用以下命令连接到MySQL服务器:mysql -h localhost -u username -p password其中,username表示MySQL服务器的用户名。
4. -p, --password该参数用于指定MySQL服务器的密码。
例如,可以使用以下命令连接到MySQL服务器:mysql -h localhost -u username -p password其中,password表示MySQL服务器的密码。
5. -D, --database该参数用于指定要连接的MySQL数据库名称。
例如,可以使用以下命令连接到MySQL服务器:mysql -h localhost -u username -p password -D dbname其中,dbname表示要连接的MySQL数据库名称。
6. -e, --execute该参数用于指定要在MySQL服务器上执行的SQL语句。
MYSQL命令大全常见的MySQL命令大全一、连接MySQL格式:mysql -h主机地址-u用户名-p用户密码1、例1:连接到本机上的MYSQL。
首先在打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>。
2、例2:连接到远程主机上的MYSQL。
假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。
则键入以下命令:mysql -h110.110.110.110 -uroot -pabcd123(注:u与root可以不用加空格,其它也一样)3、退出MYSQL命令:exit (回车)。
二、修改密码格式:mysqladmin -u用户名-p旧密码password 新密码1、例1:给root加个密码ab12。
首先在DOS下进入目录mysqlbin,然后键入以下命令:mysqladmin -uroot -password ab12注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、例2:再将root的密码改为djg345。
mysqladmin -uroot -pab12 password djg345三、增加新用户。
(注意:和上面不同,下面的因为是MySQL环境中的命令,所以后面都带一个分号作为命令结束符)格式:grant select on 数据库.* to 用户名@登录主机identified by \"密码\"例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。
首先用以root用户连入MySQL,然后键入以下命令:grant select,insert,update,delete on *.* to test2@localhost identified by \"abc\";如果你不想test2有密码,可以再打一个命令将密码消掉。
如何使用mysql命令行基本命令大全MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
我们就要善于使用mysql命令行,从数据库的建立到表数据的删除,小编都给大家整理出来了,请看下文。
如何使用mysql命令行?1、登陆mysql打cmd命令终端,如果已经添加了mysql的环境变量,可以直接使用命令01mysql -uroot直接回车,之后按提示输入密码,如果未添加mysql的环境变量,可以切换到mysql的安装目录下的bin目录,再使用01mysq -uroot你也可以手动为mysql添加环境变量。
这里就不介绍怎么添加环境变量的方法了密码输入正确之后,就会出现“Welcome to the MySQL monitor. Commands end with ; or \g. ......”字样,命令行出现“mysql》”字符前缀。
现在你就可以使用命令对mysql进行操作了。
曾经有没有过这样的经历,原来看见别人在命令行里面咔咔的猛敲时,就一通的崇拜,觉得这人很牛,现在你也可以让别一通崇拜了。
mysql的所有命令都以“;”或者\g为结束符2、新建数据库在新建数据库之后,我们先设置一下字符集01mysql>SET NAMES utf8;然后再创建数据库01mysql>CREATE DATABASE lesson3、显示所有数据库01mysql>SHOW DATABASES;4、使用数据库01mysql>USE 数据库名;5、新建表01mysql>CREATE TABLE study(02id int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '学生id号',03username varchar(30) NOT NULL DEFAULT '' COMMENT '学生名字',04class tinyint(3) unsigned NOT NULL,05sex enum('男','女','保密') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '保密' COMMENT '性别', 06addtime int(10) NOT NULL DEFAULT '0',07PRIMARY KEY (id)08)ENGINE=InnoDB COMMENT = '学生表';6、显示所有表01mysql>SHOW TABLES;7、修改表的名称01mysql>RENAME TABLE study TO study_new;或者01mysql>ALTER TABLE study_new RENAME TO study;8、显示字段信息01SHOW COLUMNS FROM study或者01DESCRIBE study9、插入数据01mysql> insert into study (username,class,sex)VALUES('小王',1,'男'),('小四',2,'女');10、查询数据(使concat函数拼接数据)01mysql> SELECT username,CONCAT(class,'班'),sex FROMstudy;11、删除数据01mysql>DELETE FROM study WHERE id=1;12、删除数据表01DROP TABLE study;13、删除数据库01mysql> DROP DATABASE lesson;补充:MySQL 数据库常用命令create database name; 创建数据库use databasename; 进入数据库drop database name 直接删除数据库,不提醒show tables; 显示表describe tablename; 查看表的结构select 中加上distinct去除重复字段mysqladmin drop databasename 删除数据库前,有提示。
mysql数据库常用语句大全1.连接数据库:连接本地数据库:mysql -u root -p连接远程数据库:mysql -h 192.169.22.199 -u root -p退出数据库:exit2.创建数据库:create database payment;使用 mysqladmin 创建数据库mysqladmin -u root -p create abc_db; 3.显示所有数据库:show databases;4.删除数据库:drop database payment;使用 mysqladmin 删除数据库mysqladmin -u root -p drop abc_db5.选择数据库:use home_db;6.数据类型:数值类型:TINYINT:SMALLINT:MEDIUMINT:INT(INTEGER):BIGINT:FLOAT:DOUBLE:DECIMAL:日期和时间类型:DATE:TIEM:DATETIME:YEAR:TIMESTAMP:字符串类型:CHAR:VARCHAR:TINYBLOB:TINYTEXT:BLOB:TEXT:MEDIUMBLOB:MEDIUMTEXT:LONGBLOB:LONGTEXT:7.创建数据表:CREATE TABLE IF NOT EXISTS `t_order`( `id` INT(10) UNSIGNED AUTO_INCREMENT,`title` VARCHAR(100) NOT NULL,PRIMARY KEY(`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;8.删除数据表:DROP TABLE t_order;9.insert 插入:插入一条数据:INSERT INTO t_order(title)VALUES('手机');INSERT 插入多条数据:INSERT INTO t_order(title)VALUES('笔记本'),('平板电脑');10.select 查询:所有字段查询:SELECT * FROM t_order;某些字段查询:SELECT t_order.id, t_order.title FROM t_order;分页查询:SELECT t_order.title FROM t_order WHERE id LIMIT 1,10 11.where 条件:OR,AND的应用:SELECT * FROM t_order WHERE title ='手机' OR title='笔记本';SELECT * FROM t_order WHERE title ='手机' AND id=2;12.update 更新:UPDATE t_order SET title='苹果手机' WHERE id =2;13.delete 删除:DELETE FROM t_order WHERE id=2;14.like 查询SELECT * FROM t_order WHERE title LIKE '%手机%';SELECT * FROM t_order WHERE title LIKE '_机';14.union 联合查询:连接两个以上的 SELECT 语句合并成一个结果集合SELECT * FROM t_order UNION SELECT * FROM t_user; SELECT * FROM t_order UNION ALL SELECT * FROM t_user;15.order by 排序:升序排序:SELECT * FROM t_order ORDER BY id ASC;降序排序:SELECT * FROM t_order ORDER BY id DESC;16.group by 分组:SELECT title, count(*) as total FROM t_order GROUP BY title;17.join 连接:inner join(内连接) on:获取两个表中字段匹配关系的记录SELECT * FROM t_order o INNER JOIN t_user u ON o.id =u.id;left join(左连接)on:获取左表所有记录,即使右表没有对应匹配的记录SELECT * FROM t_order o LEFT JOIN t_user u ON o.id =u.id;right join(右连接)on:获取右表所有记录,即使左表没有对应匹配的记录SELECT * FROM t_order o RIGHT JOIN t_user u ON o.id =u.id;18.null的处理:null值的判断:SELECT * FROM t_user WHERE name IS NULL;非null值的判断:SELECT * FROM t_user WHERE name IS NOT NULL;19.REGEXP 正则表达式:SELECT * FROM t_order WHERE title REGEXP('手机$'); SELECT * FROM t_order WHERE title REGEXP('^笔');。
mysql查询语句大全及用法MySQL是一种常用的关系型数据库管理系统,提供了强大的查询语言(SQL)来操作和管理数据库。
下面是一些常见的MySQL查询语句及其用法:1. SELECT语句:-用法:用于从数据库中检索数据。
-示例:SELECT * FROM 表名;(检索表中的所有数据)SELECT 列1, 列2 FROM 表名WHERE 条件;(根据条件检索指定列的数据)2. INSERT语句:-用法:用于向数据库中插入新的数据。
-示例:INSERT INTO 表名(列1, 列2) VALUES (值1, 值2);(向表中插入指定列的数据)3. UPDATE语句:-用法:用于更新数据库中的数据。
-示例:UPDATE 表名SET 列1 = 值1, 列2 = 值2 WHERE 条件;(根据条件更新指定列的数据)4. DELETE语句:-用法:用于从数据库中删除数据。
-示例:DELETE FROM 表名WHERE 条件;(根据条件删除数据)5. WHERE子句:-用法:用于在SELECT、UPDATE和DELETE语句中指定条件。
-示例:SELECT * FROM 表名WHERE 列= 值;(根据条件检索数据)6. ORDER BY子句:-用法:用于对结果进行排序。
-示例:SELECT * FROM 表名ORDER BY 列ASC/DESC;(根据指定列的升序或降序排序数据)7. GROUP BY子句:-用法:用于将结果分组。
-示例:SELECT 列, COUNT(*) FROM 表名GROUP BY 列;(根据指定列对数据进行分组并计数)8. JOIN语句:-用法:用于在多个表之间建立连接。
-示例:SELECT * FROM 表1 JOIN 表2 ON 表1.列= 表2.列;(根据指定列在两个表之间建立连接)9. DISTINCT关键字:-用法:用于返回唯一的结果。
-示例:SELECT DISTINCT 列FROM 表名;(返回指定列的唯一结果)10. LIMIT关键字:-用法:用于限制结果集的行数。
mysql查看数据库、表的基本命令1:show databases;查看所有的数据库,等同于select schema_name from information_schema.schemata\G。
\G 替换;,以纵向报表的形式输出结果,有利于阅读。
2. status 查看mysql数据库的运⾏状态3. use 命令选择数据库例如 use information_schema,当使⽤此命令后select schema_name from information_schema.schemata\G,可以为select schema_name from schemata\G4. 查看数据库中的表show tables同样也可以在information_schema中查看,show命令是⽅便使⽤的简短模式。
select table_name from tables where table_schema='jblog';5. 查看表结构desc table_name;6.查看表状态 show table status from db like 条件可以查看engine数据库引擎,version,row、index等信息7.⼩技巧,当多⾏命令输⼊,发现错误后,⽤\c结束。
赋予⽤户某表所有权限grant all on clyg_tmc_hotel_thd_qiantao to 'root'@'%';-------------------------------------------------------------另,查询数据库运⾏状态的基本命令:#查询数据库连接show full processlist;show status like'%Max_used_connections%';show status like'%Threads_connected%';#当前连接数show status like'%table_lock%';#表锁定show status like'innodb_row_lock%';#⾏锁定show status like'%qcache%'; #查询缓存情况show variables like"%query_cache%";SHOW STATUS LIKE'Qcache%';show variables like"%binlog%";show status like'Aborted_clients';#由于客户没有正确关闭连接已经死掉,已经放弃的连接数量show variables like'%max_connections%';//查看最⼤连接数量show variables like'%timeout%';#查看超时时间show variables like'log_%'; #查看⽇志是否启动。
一、1.登录数据库系统mysql –h localhost –u root -p2.查看已存在的数据库SHOW DATABASES;3.查看默认存储引擎SHOW V ARIABLES LIKE 'storage_engine';4.创建数据库CREATE DATABASE school;5.删除数据库DROP DATABASE school;二、(1)登录数据库mysql -h localhost -u root -p(2)查看数据库系统中已存在的数据库,代码如下:SHOW DATABASES;(3)查看该数据库系统支持的存储引擎的类型,代码如下:SHOW ENGINES;(4)创建student数据库和teacher数据库。
CREATE DA TABASE student;CREATE DA TABASE teacher;(5)再次查看数据库系统中已经存在的数据库,确保student和teacher数据库已经存在,代码如下:SHOW DATABASES;(6)删除teacher数据库,代码如下:DROP DATABASE teacher ;(7)再次查看数据库系统中已经存在的数据库,确保teacher数据库已经删除。
SHOW DATABASES;三、1.登录数据库系统mysql –h localhost –u root -p2.选择example数据库查看数据库的代码SHOW DATABASES;选择example数据库的代码USE example;3.创建student表和grade表创建student表的代码CREATE TABLE student(num INT(10) NOT NULL UNIQUE PRIMARY KEY ,name V ARCHAR(20) NOT NULL ,sex V ARCHAR(4) NOT NULL ,birthday DA TETIME ,address V ARCHAR(50));创建grade表的代码CREATE TABLE grade(id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT, course V ARCHAR(10) NOT NULL ,s_num INT(10) NOT NULL ,grade V ARCHAR(4),CONSTRAINT grade_fk FOREIGN KEY (s_num)REFERENCES student(num));4.将grade表的course字段的数据类型改为V ARCHAR(20),代码如下:ALTER TABLE grade MODIFY course V ARCHAR(20);5.将s_num字段的位置改到course字段的前面,代码如下:ALTER TABLE grade MODIFY s_num INT(10) AFTER id;6.将grade字段改名为scoreALTER TABLE grade CHANGE grade score V ARCHAR(4);7.删除grade表的外键约束ALTER TABLE grade ENGINE=MyISAM;8.将grade表的存储引擎更改为MyISAM类型ALTER TABLE grade ENGINE=MyISAM;9.将student表的address字段删除ALTER TABLE student DROP address;10.在student表中增加名为phone的字段ALTER TABLE student ADD phone INT(10);11.将grade表改名为gradeInfoALTER TABLE grade RENAME gradeInfo;12.删除student表DROP TABLE student;四1.操作teacher表(1)首先创建数据库school,代码如下:CREATE DATABASE school;(2)创建teacher表,代码如下:CREATE TABLE teacher(id INT(4) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT, num INT(10) NOT NULL UNIQUE ,name V ARCHAR(20) NOT NULL ,sex V ARCHAR(4) NOT NULL ,birthday DATETIME ,address V ARCHAR(50));(3)将teacher表的name字段的数据类型改为VARCHAR(30),代码如下:ALTER TABLE teacher MODIFY name V ARCHAR(30) NOT NULL;(4)将birthday字段的位置改到sex字段的前面,代码如下:ALTER TABLE teacher MODIFY birthday DA TETIME AFTER name;(5)将num字段改名为t_id,代码如下:ALTER TABLE teacher CHANGE num t_id INT(10) NOT NULL;(6)将teacher表的address字段删除,代码如下:ALTER TABLE teacher DROP address;(7)在teacher表中增加名为wages的字段,数据类型为FLOAT,代码如下:ALTER TABLE teacher ADD wages FLOAT;(8)将teacher表改名为teacherInfo,代码如下:ALTER TABLE teacher RENAME teacherInfo;(9)将teacher表的存储引擎更改为MyISAM类型,代码如下:ALTER TABLE teacherInfo ENGINE=MyISAM;2.操作department表和worker表(1)创建department表,代码如下:CREATE TABLE department(d_id INT(4) NOT NULL UNIQUE PRIMARY KEY ,d_name VARCHAR(20) NOT NULL UNIQUE ,function V ARCHAR(50) ,address V ARCHAR(50));(2)创建worker表,代码如下:CREATE TABLE worker (id INT(4) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT, num INT(10) NOT NULL UNIQUE ,d_id INT(4) ,name V ARCHAR(20) NOT NULL ,sex V ARCHAR(4) NOT NULL ,birthday DA TE ,address V ARCHAR(50) ,CONSTRAINT worker_fk FOREIGN KEY (d_id)REFERENCES department (d_id));(3)删除department表,代码如下:DROP TABLE department;4)删除worker表的外键约束,代码如下:ALTER TABLE worker DROP FOREIGN KEY worker_fk;(5)重新删除department表,代码如下:DROP TABLE department;五、1.登录数据库系统并创建job数据库登录MySQL数据库的命令如下:mysql –h localhost –u root -p创建job数据库的代码如下:CREATE DATABASE job;2.创建user表选择job数据库的代码如下:USE job;创建user表的代码如下:CREATE TABLE user(userid INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT , username V ARCHAR(20) NOT NULL ,passwd V ARCHAR(20) NOT NULL ,info TEXT ,UNIQUE INDEX index_uid ( userid DESC ) ,INDEX index_user ( username, passwd ) ,FULLTEXT INDEX index_info( info ))ENGINE=MyISAM;查看user表的结构的代码如下:SHOW CREATE TABLE user \G3.创建information表创建information表的代码如下:CREATE TABLE information (id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT,name V ARCHAR(20) NOT NULL ,sex V ARCHAR(4) NOT NULL ,birthday DA TE ,address V ARCHAR(50) ,tel V ARCHAR(20) ,pic BLOB);查看information表的结构的代码如下:SHOW CREATE TABLE information \G4.在name字段创建名为index_name的索引CREATE INDEX index_name ON information( name(10) );5.创建名为index_bir的多列索引CREATE INDEX index_bir ON information(birthday, address );6.用ALTER TABLE语句创建名为index_id的惟一性索引ALTER TABLE information ADD INDEX index_id( id ASC );7.删除user表上的index_user索引删除index_user索引的代码如下:DROP INDEX index_user ON user;查看user表的结构的代码如下:SHOW CREATE TABLE user \G8.删除information表上的index_name索引删除index_name索引的代码如下:DROP INDEX index_name ON information;查看information表的结构的语句如下:SHOW CREATE TABLE information \G六、(1)创建workInfo表CREATE TABLE workInfo (id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT,name V ARCHAR(20) NOT NULL ,type V ARCHAR(10) ,address V ARCHAR(50) ,tel V ARCHAR(20) ,wages INT ,contents TINYTEXT ,extra TEXT ,UNIQUE INDEX index_id (id DESC));(2)使用CREATE INDEX语句为name字段创建长度为10的索引index_name,代码如下:CREATE INDEX index_name ON workInfo( name(10) );(3)使用ALTER TABLE语句在type和address上创建名为index_t的索引,代码如下:ALTER TABLE workInfo ADD INDEX index_t( type, address );(4)使用ALTER TABLE语句将workInfo表的存储引擎更改为MyISAM类型,代码如下:ALTER TABLE workInfo ENGINE=MyISAM;(5)使用ALTER TABLE语句在extra字段上创建名为index_ext的全文索引,代码如下:ALTER TABLE workInfo ADD FULLTEXT INDEX index_ext (extra );(6)使用DROP语句删除workInfo表的惟一性索引index_id,代码如下:DROP INDEX index_id ON workInfo ;七、1.在test数据库中work_info表选择test数据库的代码如下:USE test;创建work_info表的代码如下:CREATE TABLE work_info (id INT(10) NOT NULL UNIQUE PRIMARY KEY ,name V ARCHAR(20) NOT NULL ,sex V ARCHAR(4) NOT NULL ,age INT(5),address V ARCHAR(50) ,tel V ARCHAR(20));2.插入记录INSERT INTO work_info V ALUES( 1,'张三', 'M',18,'北京市海淀区','1234567'); INSERT INTO work_info V ALUES( 2,'李四', 'M', 22,'北京市昌平区','2345678'); INSERT INTO work_info V ALUES( 3,'王五', 'F', 17,'湖南省永州市','3456789'); INSERT INTO work_info V ALUES( 4,'赵六', 'F', 25,'辽宁省阜新市','4567890');3.创建视图info_viewCREATE ALGORITHM=MERGE VIEWinfo_view ( id,name, sex, address )AS SELECT id,name, sex, addressFROM work_info WHERE age>20WITH LOCAL CHECK OPTION;4.查看视图info_view的基本结构和详细结构查看基本结构的代码如下:DESC info_view;查看详细结构的代码如下:SHOW CREATE VIEW info_view \G5.查看视图info_view的所有记录SELECT * FROM info_view;6.修改视图info_viewALTER ALGORITHM=MERGE VIEWinfo_view ( id,name, sex, address )AS SELECT id,name, sex, addressFROM work_info WHERE age<20WITH LOCAL CHECK OPTION;7.更新视图UPDATE info_view SET sex='M' WHERE id=3;8.删除视图DROP VIEW info_view;八、(1)在example数据库下创建college表。
启动:net start mySql;
进入:mysql -h localhost -u root -p databaseName;
列出数据库:show databases;
选择数据库:use databaseName;
列出表格:show tables;
显示表格列的属性:show columns from tableName;
建立数据库:source fileName.txt;
匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串;
增加一个字段:alter table tabelName add column fieldName dateType;
增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;
多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中; 增加一个管理员帐户:grant all on *.* to user@localhost identified by "password";
每条语句输入完毕后要在末尾填加分号';',或者填加'\g'也可以;
查询时间:select now();
查询当前用户:select user();
查询数据库版本:select version();
查询当前使用的数据库:select database();
1、删除student_course数据库中的students数据表:
rm -f student_course/students.*
2、备份数据库:(将数据库test备份)
mysqldump -u root -p test>c:\test.txt
备份表格:(备份test数据库下的mytable表格)
mysqldump -u root -p test mytable>c:\test.txt
将备份数据导入到数据库:(导回test数据库)
mysql -u root -p test
3、创建临时表:(建立临时表zengchao)
create temporary table zengchao(name varchar(10));
4、创建表是先判断表是否存在
create table if not exists students(……);
5、从已经有的表中复制表的结构
create table table2 select * from table1 where 1<>1;
6、复制表
create table table2 select * from table1;
7、对表重新命名
alter table table1 rename as table2;
8、修改列的类型
alter table table1 modify id int unsigned;//修改列id的类型为int unsigned
alter table table1 change id sid int unsigned;//修改列id的名字为sid,而且把属性修改为int unsigned
9、创建索引
alter table table1 add index ind_id (id);
create index ind_id on table1 (id);
create unique index ind_id on table1 (id);//建立唯一性索引
10、删除索引
drop index idx_id on table1;
alter table table1 drop index ind_id;
11、联合字符或者多个列(将列id与":"和列name和"="连接)
select concat(id,':',name,'=') from students;
12、limit(选出10到20条)<第一个记录集的编号是0>
select * from students order by id limit 9,10;
13、MySQL不支持的功能
事务,视图,外键和引用完整性,存储过程和触发器
14、MySQL会使用索引的操作符号
<,<=,>=,>,=,between,in,不带%或者_开头的like
15、使用索引的缺点
1)减慢增删改数据的速度;
2)占用磁盘空间;
3)增加查询优化器的负担;
当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案;
16、分析索引效率
方法:在一般的SQL语句前加上explain;
分析结果的含义:
1)table:表名;
2)type:连接的类型,(ALL/Range/Ref)。
其中ref是最理想的;
3)possible_keys:查询可以利用的索引名;
4)key:实际使用的索引;
5)key_len:索引中被使用部分的长度(字节);
6)ref:显示列名字或者"const"(不明白什么意思);
7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数;
8)extra:MySQL的建议;
17、使用较短的定长列
1)尽可能使用较短的数据类型;
2)尽可能使用定长数据类型;
a)用char代替varchar,固定长度的数据处理比变长的快些;
b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能;
c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。
使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了;
d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大;
18、使用not null和enum
尽量将列定义为not null,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询;
如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的;
19、使用optimize table
对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。
具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。
可以通过使用optimize table来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。
optimize table可以用于MyISAM和BDB类型的数据表。
实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表;
20、使用procedure analyse()
可以使用procedure analyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedure analyse()就可以了;例如:select * from students procedure analyse();
select * from students procedure analyse(16,256);
第二条语句要求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长;
21、使用查询缓存
1)查询缓存的工作方式:
第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。
2)配置缓存参数:
变量:query_cache _type,查询缓存的操作模式。
有3中模式,0:不缓存;1:缓存查询,除非与select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询;query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。
22、调整硬件
1)在机器上装更多的内存;
2)增加更快的硬盘以减少I/O等待时间;
寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快;
3)在不同的物理硬盘设备上重新分配磁盘活动;
如果可能,应将最繁忙的数据库存放在不同的物理设备上,这跟使用同一物理设备的不同分区是不同的,因为它们将争用相同的物理资源(磁头)。
82。