一个网络管理员应该掌握的mysql管理命令(mysqld)20120610
- 格式:doc
- 大小:222.00 KB
- 文档页数:8
MySQL常用命令MySQL是一种常用的开源关系型数据库管理系统,被广泛应用于各种Web应用程序和企业级应用程序。
本文将介绍一些常用的MySQL命令。
连接与退出连接到MySQL数据库服务器并开始会话,可以使用以下命令:mysql -u [username] -p其中`[username]`是你的MySQL用户名。
输入该命令后,会提示你输入密码进行验证,验证通过后将进入MySQL命令行界面。
退出MySQL命令行界面,可以使用以下命令:exit数据库操作创建数据库要创建一个新的数据库,可以使用以下命令:CREATE DATABASE [database_name];其中`[database_name]`是你要创建的数据库的名称。
使用数据库要使用一个已经存在的数据库,可以使用以下命令:USE [database_name];其中`[database_name]`是你要使用的数据库的名称。
查看数据库要查看当前MySQL服务器上的所有数据库,可以使用以下命令:SHOW DATABASES;该命令将列出所有数据库的名称。
删除数据库如果你不再需要某个数据库,可以使用以下命令将其删除:DROP DATABASE [database_name];其中`[database_name]`是你要删除的数据库的名称。
请注意,该操作是不可逆的。
表操作创建表要在数据库中创建一个新的表,可以使用以下命令:CREATE TABLE [table_name] ([column1] [data_type1],[column2] [data_type2],...);其中`[table_name]`是你要创建的表的名称,`[column1] [data_type1]`表示表的第一个列及其数据类型,`[column2] [data_type2]`表示表的第二个列及其数据类型,以此类推。
查看表要查看某个数据库中的所有表,可以使用以下命令:SHOW TABLES;该命令将列出该数据库中的所有表的名称。
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是一种开源的关系型数据库管理系统,广泛应用于Web应用程序的开发中。
在使用MySQL数据库时,我们需要掌握一些基本的数据库命令,以便对数据库进行管理和操作。
本文将为大家详细介绍MySQL数据库命令大全,帮助大家更好地使用MySQL数据库。
1. 连接数据库。
在使用MySQL数据库之前,首先需要连接数据库。
可以使用以下命令连接到MySQL数据库:```。
mysql -u username -p。
```。
其中,-u参数用于指定用户名,-p参数表示需要输入密码。
输入密码后,即可成功连接到MySQL数据库。
2. 创建数据库。
创建数据库是使用MySQL数据库的第一步。
可以使用以下命令创建数据库:```。
CREATE DATABASE database_name;```。
其中,database_name为要创建的数据库的名称。
执行该命令后,即可成功创建一个新的数据库。
3. 删除数据库。
如果需要删除数据库,可以使用以下命令:```。
DROP DATABASE database_name;```。
执行该命令后,即可删除指定的数据库。
4. 显示数据库。
要查看当前MySQL数据库中存在哪些数据库,可以使用以下命令:```。
SHOW DATABASES;```。
该命令将列出所有的数据库名称。
5. 使用数据库。
在操作数据库之前,需要先选择要使用的数据库。
可以使用以下命令选择数据库:```。
USE database_name;```。
执行该命令后,即可选择要使用的数据库。
6. 创建表。
在数据库中,数据以表的形式进行存储。
可以使用以下命令创建表:```。
CREATE TABLE table_name (。
column1 datatype,。
column2 datatype,。
column3 datatype,。
...);```。
其中,table_name为要创建的表的名称,column1、column2等为表的列名,datatype为列的数据类型。
MySQL常⽤命令1.查看MySQL版本DOS命令⾏mysql -V注1:“V”要⼤写。
注2:不需要管理员权限。
注3:区分:DOS(Disk Operating System)磁盘操作系统;DoS(Denial of Service)拒绝服务攻击。
2.以下操作MySQL均需管理员权限。
1.启动/停⽌MySQL服务net start mysql net stop mysql2.登录MySQLroot账户mysql -u root -p3.mysql 内部使⽤命令4.修改密码链接:⽅法1 :⽤:⽤SET PASSWORD命令1、打开终端win+r输⼊cmd回车即可打开;2、通过mysql -u⽤户名 -p指定root⽤户登录MySQL,输⼊后回车会提⽰输⼊密码。
3、修改MySQL的root⽤户密码,格式:mysql> set password for ⽤户名@localhost = password('新密码'); 例⼦:mysql> set password for = password('shapolang'); 上⾯例⼦将⽤户root的密码更改为shapolang;重新登录,输⼊新密码shapolang就ok了;⽅法2 :⽤mysqladmin1、打开终端win+r输⼊cmd回车即可打开;2、修改MySQL的root⽤户密码格式:mysqladmin -u⽤户名 -p旧密码 password 新密码例⼦:mysqladmin -uroot -pshapolang password 123456上⾯例⼦将⽤户root原来的密码shapolang改为新密码123456重新登录,输⼊新密码123456就ok了;⽅法3 :⽤UPDATE直接编辑user表1、⾸先登录MySQL。
2、连接权限数据库:use mysql; 。
3、改密码:update user set password=password("shapolang") where user="root";(别忘了最后加分号)。
MySQL 数据库常用的命令都有哪些MySQL是一个关系型数据库管理系统,是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
那么对于mysql数据库常用的命令,站长们是否了解呢?专职优化、域名注册、网站空间、虚拟主机、服务器托管、vps主机、服务器租用的中国信息港来为你详细介绍!1、MySQL常用命令create database name; 创建数据库use databasename; 选择数据库drop database name 直接删除数据库,不提醒show tables; 显示表describe tablename; 表的详细描述select 中加上distinct去除重复字段mysqladmin drop databasename 删除数据库前,有提示。
显示当前mysql版本和当前日期select version(),current_date;2、修改mysql中root的密码:shell>mysql -u root -pmysql> update user set password=password(”xueok654123″) where user=’root’;mysql> flush privileges //刷新数据库mysql>use dbname;打开数据库:mysql>show databases; 显示所有数据库mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后mysql>describe user; 显示表mysql数据库中user表的列信息);3、grant创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个mysql> grant all privileges on *.* to user@localhost identified by ’something’ with增加新用户格式:grant select on 数据库.* to 用户名@登录主机identified by “密码”GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIEDBY ’something’ WITH GRANT OPTION;GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIEDBY ’something’ WITH GRANT OPTION;删除授权:mysql> revoke all privileges on *.* from root@”%”;mysql> delete from user whe re user=”root” and host=”%”;mysql> flush privileges;创建一个用户custom在特定客户端登录,可访问特定数据库fangchandbmysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ identified by ‘ passwd’重命名表:mysql > alter table t1 rename t2;4、mysqldump备份数据库shell> mysqldump -h host -u root -p dbname >dbname_backup.sql恢复数据库shell> mysqladmin -h myhost -u root -p create dbnameshell> mysqldump -h host -u root -p dbname < dbname_backup.sql如果只想卸出建表指令,则命令如下:shell> mysqladmin -u root -p -d databasename > a.sql如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下:shell> mysqladmin -u root -p -t databasename > a.sql那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?mysqldump -T./ phptest driver其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与mysqldump同一目录。
MySQL数据库的常⽤命令1、MySQL基本命令1.1查看版本查看mysql的版本命令:select version();1.2停⽌与启动停⽌命令:net start mysql57(服务名称)启动命令:net stop mysql57(服务名称)该命令适⽤于所有windows服务,直接打开控制台输⼊命令即可,服务名可以在任务管理器的服务中查;或者打开任务管理器,然后找到该服务,右键点击即可停⽌或重新启动。
1.3查看配置查看mysql的基本信息配置的命令:statusCSonnection id:连接id;Current user:MySQL当前的⽤户;Server version:MySQL的版本;Server/DB/Client/Conn characterset:编码,gbk是通⽤编码,⽐utf-8强⼤⼀些。
1.4查询当前时间查询当前时间的命令:selecet now();1.5查询连接数查询myaql的连接数的命令:show variables like '%connections%';如上图,显⽰MySQL的最⼤连接数是151。
1.6查询超时的关键字查询超时的关键字的命令为:show variables like '%timeout%';我们需要关注的是链接、读和写超时三部分。
1.7查询当前数据库查询当前数据库的命令为:select database();该命令适⽤于进⼊某个数据库后,验证是否进⼊到该数据库。
2、MySQL的数据类型(1)整形数字:tinyint smallint int bigint bit(2)带⼩数点的数字:decimal float double(3)字符串:char varchar blob text enum set(4)⽣⽇/⽇期:datetime3、MySQL数据库管理数据库中有很多表(table),我们可以对其做增、删、改、查的操作。
mysql命令行常用命令mysql命令行常用命令第一招、mysql服务的启动和停止net stop mysqlnet start mysql第二招、登陆mysql语法如下: mysql -u用户名 -p用户密码键入命令mysql -uroot -p,回车后提示你输入密码,输入12345,然后回车即可进入到mysql 中了,mysql的提示符是:mysql>注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP第三招、增加新用户格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"如,增加一个用户user1密码为password1,让其可以在本机上登录,并对所有数据库有查询、插入、修改、删除的权限。
首先用以root用户连入mysql,然后键入以下命令:grant select,insert,update,delete on *.* to user1@localhost Identified by "password1";如果希望该用户能够在任何机器上登陆mysql,则将localhost改为"%"。
如果你不想user1有密码,可以再打一个命令将密码去掉。
grant select,insert,update,delete on mydb.* to user1@localhost identified by "";第四招:操作数据库登录到mysql中,然后在mysql的提示符下运行下列命令,每个命令以分号结束。
1、显示数据库列表。
show databases;缺省有两个数据库:mysql和test。
mysql库存放着mysql的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行操作。
2、显示库中的数据表:use mysql;show tables;3、显示数据表的结构:describe 表名;4、建库与删库:create database 库名;drop database 库名;5、建表:use 库名;create table 表名(字段列表);drop table 表名;6、清空表中记录:delete from 表名;7、显示表中的记录:select * from 表名;第五招、导出和导入数据1. 导出数据:mysqldump --opt test > mysql.test即将数据库test数据库导出到mysql.test文件,后者是一个文本文件如:mysqldump -u root -p123456 --databases dbname > mysql.dbname就是把数据库dbname导出到文件mysql.dbname中。
mysql数据库常⽤命令⽬录数据库常⽤命令启动/暂停net start mysql; 启动net stop mysql; 暂停使⽤root账户登录mysql -uroot -p123456root是默认⽤户,超级管理员-p后⾯接密码显⽰所有数据库show databases;使⽤某个数据库use 数据库名修改密码1.使⽤mysql数据库use mysql2.修改密码(将root⽤户密码修改为123456)update er set authentication_string=password('123456') where user='root';3.刷新flush privileges;创建⽤户create user 'username'@'host' identified by 'password';给⽤户授权grant privileges on databasename.tablename to 'username'@'host';privileges:⽤户操作权限,如select,insert,update等,如果要授予所有权限使⽤alldatabasename:数据库名tablename:表名,如果要授予⽤户对所有数据库和表相应操作权限可以使⽤*表⽰,如*.*如:我要username⽤户,对所有数据库和表有查和修改功能grant select,update on *.* to 'username'@'host';注意:以上授权⽤户不能给其他⽤户授权,如果想要给其他⽤户授权,⽤以下命令:grant privileges on databasename.tablename to 'username'@'host' with grant option;创建⼀个数据库⽅式1:create database 数据库名;⽅式2:create database if not exists 数据库名 default 默认编码集(utf8)删除⼀个数据库⽅式1:drop database 数据库名⽅式2:drop database if exists 数据库名什么是SQLSQL由四部分组成DDL:创建和删除结构DML:对表和视图进⾏插⼊,删除,更新操作DQL:对表和试图进⾏查询操作TCL:使⽤事务管理DML操作mysql的数据类型理论实战经常变化的字段⽤varchar知道固定长度⽤char超过255字节只能⽤varchar和text能⽤varchar的地⽅不⽤text能够⽤数字类型的字段尽量选择数字类型⽽不⽤字符串类型,这会降低查询和连接的性能,并会增加存储开销.这是因为引擎在处理查询和连接会逐个⽐较字符串中的每⼀个值,⽽对于数字类型只需⽐较⼀次就够了.同⼀张表出现多个⼤字段,能合并时尽量合并,不能合并时考虑分表DDL操作创建表create table 表名(列名1 数据类型1,列名2 数据类型2,列名3 数据类型3,....列名称n 数据类型n)defualt charset=字符集编码(utf8),engine=指定表的存储引擎(innodb)--可选查看表结构⽅式1desc 表名称;⽅式2show create table 表名称; -- 可以看的建表语句修改表结构基本语法:arlter table 表名1. 向表中添加⼀列alter table 表名 add column 列名称数据类型;如:向student表新增加⼀列stu_height学⽣⾝⾼alter table student add column stu_height int(11);2. 删除某⼀列alter table 表名 drop column 列名称例如:删除student表中的学⽣⾝⾼alter table student drop column stu_height;3. 修改列名称和数据类型alter table student change column 原列名新列名新数据类型;例如修改stu_sex 为 student_sex 数据类型修改为 varchar(30)alter table student change column stu_sex student_sex varchar(30);4. 修改某⼀列的数据类型alter table student modify column 原来的列名新的数据类型;例如:将学⽣年龄修改为int类型alter table student modify column stu_age int(11);删除表1. 直接删除drop table 表名称;2. 删除之前先判断表是否存在drop table if exists 表名称;显⽰当前库的所有表show tables;DML操作添加数据1. 单个添加插⼊所有数据时insert into 表名称 values (值1,值2,……);insert into student values(101,'⽼王',0,'⾜球',31);注意:在插⼊所有的数据时values后⾯的括号必须填满所有列,不然会报错,如果你不想插⼊全部的列,就可以在表名称后⾯指定列名称.如:insert into 表名称 (列名1,列名2) values(列名1值,列名2值)2. 批量添加⾏与⾏之间使⽤半⾓逗号分离,value关键字只定义⼀次insert into student(id,stu_name,stu_sex,stu_hobby,stu_age)values(108,'⽼王',1,'Basketball',39),(1031,'⽼张',1,'Basketball',39);修改数据1. 批量修改update 表名称 set 列名称=值;例如:student表的年龄全部修改为50update student set stu_age=50;2. 单个修改如果只想修改某⼀⾏的数据,需要加上条件例如:我只想修改id为1031的年龄为60 where 表⽰⾏过滤update student set stu_age=60 where id=1031;3. 单个修改多个值例如:修改id为1031的年龄为60,姓名为⼤⼤update student set stu_age=60,stu_name='⼤⼤' where id=1031;删除数据1. 删除⼀个删除⼀条数据delete from 表名 where 条件;例如:删除id为108的student数据delete from student where id=108;2. 删除全部delete from 表名;例如:删除student表所有数据-- 开发时最好不要⽤这个,可以定义⼀个字段⽤来表⽰是否删除,0表⽰存在1表⽰要删除,然后查询时使⽤where条件判断字段进⾏查询出来.delete from studnet;3. truncate关键字truncate是DDL,删除所有数据,不⽀持where ,不能回滚delete是DML,可以删除部分数据,因为⽀持where,可以回滚总体上truncate的效率⽐delete⾼,它们都只能删除数据不能删除表结构,只要drop才能删除表结构.数据完整性因为上⾯的表缺乏安全性,会有重复的id等数据这些都是脏数据.我们要给表定义规则,确保表中的数据有效性,⼀致性,安全性,尽最⼤可能减少脏数据,重复的的数据主键约束主键:主要的关键字,⼀个表如果创建了主键那么该⾏的所有数据必须在表中唯⼀.设置了主键约束那么这个字段不能为空,不能重复如:⾝份证必须是唯⼀的且不能为空,那么就把⾝份证设置为主键总结:⾮空且唯⼀设计原则:⼀般主键为数值类型,呈递增趋势.如果不想每次插⼊主键可以不⼿动添加可以设置为⾃动增长,⾃动增长从1开始,如果⼿动添加后设置了⼀个新值,那么下次⾃动设置时主键会从你⼿动设置的值往后递增.语法:create table tb_class(id int(11) auto_increment, -- id是主键列,不⽤显⽰插⼊值会⾃动增长class_name varchar(30),class_desc varchar(100),primary key(id) -- 为tb_class表的id设置主键约束)注意: MySQL 数据库 auto_increment⾃动增长和主键primary key 是配套的不能单独使⽤⾮空约束某字段的值不允许为空,如果其字段没有设置值将报错create table tb_class(id int(11) auto_increment, -- id是主键列,不⽤显⽰插⼊值会⾃动增长class_name varchar(30) not null,-- not null⾮空约束class_desc varchar(100),primary key(id) -- 为tb_class表的id设置主键约束)唯⼀约束制定⼀个规则让某⼀列的数据必须唯⼀特征:某列数据可以为空,但必须唯⼀,可以有多个null值,⼀般设置了唯⼀约束那么最⾼设置⾮空约束,这样能提升索引效率.例如:学⽣的⼿机号码create table tb_1(phone int unique -- unique)默认约束为某⼀列制定⼀个默认规则如:性别默认为0create table tb_1(phone int unique,sex int DEFAULT 0 -- default 0)外键约束外部的关键字叫外键,通常为多张表建⽴联系,确保表与表之间的安全性,⼀致性,能够减少数据冗余前⾯个⼏个约束建⽴在⼀张表中外键约束:多张表建⽴的约束,如果⼀张表的某个字段建⽴了外键约束,这个字段的取值就必须是你所依赖的主表中主键的值.如果取其他值会报错,当然如果主表的主键被其他从表所引⽤了这则个字段就不能删除了场景:创建⼀个tb_student表,为其添加默认约束、唯⼀约束、⾮空约束、外键约束create table tb_student(id int(11) auto_increment, -- id⾃动增长stu_name varchar(50) not null, -- name不能为空stu_mobile varchar(20) unique, -- mobile唯⼀不能重复stu_sex bit default 1, -- 设置sex默认为1class_id int(11) not null, -- 设置class_id不能为空primary key(id), -- 设置id为主键foreign key(class_id) references tb_class(id) -- 学⽣表的class_id建⽴外键去关联tb_class表的主键id,建⽴外键时⼀定要保证外键依赖的主表要先创建)engine=innodb,default charset utf8;约束总结约束分为两类:1. ⾏级别约束: 主键约束,外键约束2. 列级别约束: ⾮空约束,唯⼀约束,默认约束外键约束⼩结:foreign key(外键列) references 主表(主键列)references关键字的右边是主表的主键列,左边是从表的外键列,该关键字在主表和从表之间建⽴了联系创建表⼩结:没有外键的表是主表,有外键的表是从表.先创建主表后在创建从表(有外键的表是从表)插⼊数据⼩结:先插⼊主表数据后插⼊从表数据删除数据⼩结:先删除从表数据后删除主表数据表关系⼀对⼀数据表间⼀对⼀关系的表现有两种,⼀种是外键关联,⼀种是主键关联⼀对多/多对⼀存在最普遍的映射关系,简单来讲就如班级与学⽣的关系;⼀对多:从班级度来说⼀个班级拥有多个学⽣即为⼀对多多对⼀:从学⽣⾓度来说多个学⽣属于⼀个班级即为多对⼀-- 班级表(主表)create table tb_class(id int(11) auto_increment, -- 编辑编号class_name varchar(30) not null, -- 班级名称class_desc varchar(100), -- 班级描述primary key(id) -- 为class表设置主键约束)engine=innodb,default charset utf8;-- 学⽣表(从表)create table tb_student(id int(11) auto_increment,stu_name varchar(10) not null,stu_mobile varchar(50) unique,stu_sex bit default 1,class_id int(11) not null,primary key(id),foreign key(class_id) references tb_class(id) -- 设置外键class_id 关联tb_class表的主键)engine=innodb,default charset utf8;多对多例如:学⽣与选修课之间的关系,⼀个学⽣可以选多门课程,⼀门课程可以被多个学⽣选择通常多对多关系我们⼀般采⽤中间表处理,将多对多转换为两个⼀对多的关系.代码⽰例:-- 学⽣表create table tb_student(id int(11) auto_increment,stu_name varchar(50) not null,stu_mobile varchar(20) unique,stu_sex bit default 1,class_id int(11) not null,primary key(id),foreign key(class_id) references tb_class(id) -- 设⽴外键表明这个表是tb_class的从表)engine=innodb,default charset utf8;-- 课程表create table tb_course(id int(11) auto_increment,course_name varchar(30) not null,primary key(id))engine=innodb,default charset utf8;-- 学⽣课程表(中间表)create table tb_student_course(sut_id int(11), -- 学⽣idcourse_id int(11), -- 课程idcourse_score int(11), -- 课程成绩primary key(stu_id,course_id), -- 复合主键foreign key(stu_id) references tb_student(id),-- 将学⽣id设置为外键关联tb_student学⽣表的主键foreign key(course_id) references tb_course(id)-- 将课程id设置为外键关联tb_course课程表的主键)engine=innodb,default charset utf8;⾃⾏设计⼀个员⼯系统-- 部门表(dept)drop table if exists dept;create table dept(deptNo int(11) not null comment'部门编号',dName varchar(20) not null comment'部门名称',loc varchar(20) comment'部门所在的位置',primary key(deptNo) -- 主键约束)engine=innodb,default charset utf8 comment='部门表';-- 员⼯表(emp)drop table if exists emp;create table emp(empNo int not null comment'雇员编号',ename varchar(10) not null comment'雇员姓名',job varchar(10) not null comment'职位',mgr int(11) null default null comment'雇员对应的领导编号',hiredate date null default null comment'雇员的雇佣⽇期',sal decimal(7,2) null default null comment'基本⼯资',comm decimal(7,2) null default null comment'奖⾦,佣⾦',deptno int not null comment'雇员所在的部门编号',primary key(empNo),-- 设置主键约束foreign key(deptno) references dept(deptNo) -- 为deptno设置为外键关联表dept主键)engine=innodb character set=utf8 comment'员⼯表';-- ⼯资等级表(salgrade)drop table if exists salgrade;create table salgrade(grade int not null comment'⼯资等级',losal decimal(7,2) not null comment'此等级的最低⼯资',hisal decimal(7,2) not null comment'此等级的最⾼⼯资',primary key(grade))engine=innodb character set=utf8 comment='⼯资等级表';初始化数据脚本-- 部门表插⼊数据insert into dept values(10,'财务部','武汉');insert into dept values(20,'研发部','武汉');insert into dept values(30,'销售部','深圳'),(40,'业务部','上海');-- 员⼯表插⼊数据insert into emp values (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800.00, null, 20), (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20',1600.00, 300.00, 30),(7521, 'WARD', 'SALESMAN', 7698, '1981-02-22',1250.00, 500.00, 30),(7566, 'JONES', 'MANAGER', 7839, '1981-04-02',2975.00, null, 20),(7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28',1250.00, 1400.00,30),(7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850.00, null, 30),(7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450.00, null,10),(7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000.00, null, 20),(7839, 'KING', 'PRESIDENT', null, '1981-11-17', 5000.00, null,10),(7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500.00, 0.00,30),(7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100.00, null,20),(7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950.00, null, 30),(7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000.00, null, 20),(7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300.00, null, 10);-- ⼯资等级表插⼊数据insert into salgrade values (1, 700, 1200),(2, 1201, 1400),(3, 1401, 2000),(4, 2001, 3000),(5, 3001, 9999);DQL查询操作单表数据查询简单查询select * from emp; -- 查询表emp中的全部数据select * from dept; -- 查询表dept中的全部数据select empno, ename,sal,job from emp; -- 查询emp表中的empno,ename,sal,job四列的的全部数据使⽤算术表达式select empno, ename,sal,sal*1.08 from emp;-- 查询emp表的empno,ename,sal三个字段,最后在查询sal字段*1.08后的值最后显⽰⼀列,字段名为sal*1.08select empno, ename,sal, sal*12 from emp;-- 查询emp表的empno,ename,sal三个字段,最后在查询sal字段*12后的值最后显⽰⼀列,字段名为sal*12select empno, ename,sal, sal*12 +1000 from emp;-- 查询emp表的empno,ename,sal三个字段,最后在查询sal字段*12+1000后的值最后显⽰⼀列,字段名为sal*12+1000注:在Select语句中,对数值型数据可以使⽤算术运算符创建表达式使⽤字段别名上⾯的使⽤sal*12,英⽂做为字段名并不是我们想要的在某些场景中,所以可以给字段重新命名-- ⼀下三种⽅式都可以重命名-- 字段名 as 重命名(AS可以省略)-->字段名重命名-- 别名如果含有空格或其他特殊字符或⼤⼩写敏感,需⽤双引号引起来:字段名 '重命名'select empno as 员⼯编号, ename 员⼯姓名, sal12 年薪 from emp;select empno, ename "Ename", sal12 "Anual Salary" from emp;select sal*12+5000 as "年度⼯资(加年终奖)" from emp;去重查询如我们想要看emp表中的部门id编号有那些,⽽查询全部会有重复的部门id,影响我们的可读性.所以可以使⽤distinct关键字去除重复的select distinct deptno from emp;-- DISTINCT的作⽤范围是后⾯所有字段的组合select distinct deptno,job from emp;排序查询使⽤order by⼦句对查询结果进⾏排序,排序⽅式包括升序(asc,不写默认),降序(desc)select empno, ename, sal from emp order by sal;-- 查询三个字段按照sal升序排序select empno, ename, sal from emp order by sal desc ; -- 降序排序-- 按多字段排序select deptno, empno, ename, sal from emp order by deptno, sal;-- 使⽤字段别名排序select empno, ename, sal*12 annsal from emp order by annsal;分页查询关键字:limit-- 查询前三条员⼯信息select * from emp limit 3;-- limit 后⾯跟1个参数,例如 limit 3 此时表⽰最多返回3⾏-- 查询第三条3条到第6条的客户信息select * from emp limit 3,6; -- limit 从第3条开始查6条数据第⼀个参数是从第⼏个开始,第⼆个参数查⼏条数据.-- 分页查询,每页5条-- 第1页select * from emp limit 0, 5;-- 第2页select * from emp limit 5, 5;-- 第3页select * from emp limit 10, 5;select * from emp limit 15, 5;select * from emp limit 20, 5;-- 找规律,第⼀个数字与页数的关系-- 要查询第⼏页:pageNumber-- 每页显⽰条数:pageSize-- 每页查询起始位置:startstart=(pageNumber-1)*pageSize;-- -- 每页显⽰3条,查询第4页的数据select * from emp limit 9,3;合并查询将多个select语句合并为⼀个select语句,关键字有union和union allunion:如果有重复过滤掉重复的数据.union all:不管是否有重复的,全部合并.-- 过滤掉了重复的select deptno from emp where job='clerk'unionselect deptno from emp where job='manager';-- 不过滤,直接合并select deptno from emp where job='clerk'union allselect deptno from emp where job='manager';where⼦句⽤法作⽤:指定查询条件使⽤where⼦句select * from emp where deptno=10;select * from emp where ename = 'JACK';select * from emp where hiredate = '2020-12-12';注意:字符串和⽇期值要⽤单引号扩起来字符串⼤⼩写敏感⽇期值格式敏感,缺省的⽇期格式是'YYYY-MM-DD HH:mm:ss'查询条件中的⽐较运算符MySQL⽀持如下⽐较运算符: > >= < <= != <>between...and..:介于两值之间(包括两值)in:出现在集合中like:模糊查询is null:为空值注意:mysql中的=运算符⽤来判断表达式是否相等,它没有==java使⽤!=来表⽰不等于,mysql也⽀持,但不要使⽤效率低,mysql使⽤<>表⽰不等于select * from emp where sal > 2900; -- 查询表emp中sal⼤于2900的全部员⼯select * from emp where deptno <> 30;-- 查询表emp中deptno不等于30的全部员⼯select * from emp where sal between 1600 and 2900;-- 查询emp表中sal在1600(包括)到2900(包括)的所有员⼯select * from emp where ename in('SMITH','CLARK','KING');-- 查询表emp中ename有在其中(Smith,clark,king)的全部员⼯使⽤like运算符进⾏模糊查询符号作⽤举例%表⽰0个或多个字符select * from emp where ename like 'S%';_表⽰1字符select * from emp where ename like '_A%';escape查找特殊符号select * from emp where ename like '/_A%' escape '/' 把/后⾯的字符不要当做通配符,就是查找第⼀个字符为下划线的ename符号作⽤举例使⽤IS NULL运算符进⾏空值判断select * from emp where comm is null;select * from emp where comm is not null;查询条件中可以使⽤逻辑运算符-- 在emp表中查询部门编号等于10并且sal⼤于1000 and(相当与Java的并且&&)select * from emp where deptno=10 and sal>1000;-- 在emp表中查询部门编号为10或者职位是clerk的员⼯ or(相当与java的或者||)select * from emp where deptno=10 or job='clerk';-- 在emp中查询⼯资不在800,1500,2000的员⼯select * from emp where sal not in(800,1500,2000);SQL优化问题:AND: 把检索结果较少的条件放到后⾯OR: 把检索结果较多的条件放到后⾯聚合函数使⽤函数可以⼤⼤提⾼select语句操作数据库的能⼒,它给数据的转换和处理提供了⽅便.函数只是将取出的数据进⾏处理,不会改变数据库中的值.函数分类:单⾏函数数学函数abs(x) 返回x的绝对值pi() 返回圆周率,默认显⽰六位⼩数sqrt(x) 返回⾮负数的x的⼆次⽅根mod(x,y) 返回x被y除后的余数ceil(x),ceiling(x) 返回不⼩于x的最⼩整数floor(x) 返回不⼤于x的最⼤整数round(x) round(x,y) 前者返回最接近于x的整数,即对x进⾏四舍五⼊;后者返回最接近x的数,其值保留到⼩数点后⾯y位,若y为负值,则将保留到x到⼩数点左边y位.sign(x) 返回参数x的符号,-1表⽰负数,0表⽰0,1表⽰正数pow(x,y)和power(x,y) 返回x的y次乘⽅的值exp(x) 返回e的x乘⽅后的值log(x) 返回x的⾃然对数,x相对于基数e的对数log10(x) 返回x的基数为10的对数radians(x) 返回x由⾓度转化为弧度的值degrees(x) 返回x由弧度转化为⾓度的值SIN(x)、ASIN(x) 前者返回x的正弦,其中x为给定的弧度值;后者返回x的反正弦值,x为正弦COS(x)、ACOS(x) 前者返回x的余弦,其中x为给定的弧度值;后者返回x的反余弦值,x为余弦TAN(x)、ATAN(x) 前者返回x的正切,其中x为给定的弧度值;后者返回x的反正切值,x为正切COT(x) 返回给定弧度值x的余切rand(x) 返回0-1之间的随机⼩数char_length(str) 计算字符串字符个数concat(s1,s2,.....) 返回连接参数产⽣的字符串,⼀个或多个待拼接的内容,任意⼀个为null则返回值为nullconcat_ws(x,s1,s2.,,,,) 返回多个字符串拼接之后的字符串,每个字符串之间有⼀个xinsert(s1,x,len,s2) 返回字符串s1,其⼦字符串起始于位置x,被字符串s2取代len个字符lower(str)和lcase(str)、upper(str)和ucase(str)前两者将str中的字母全部转换成⼩写,后两者将字符串中的字母全部转换成⼤写left(s,n)、right(s,n) 前者返回字符串s从最左边开始的n个字符,后者返回字符串s从最右边开始的n个字符lpad(s1,len,s2)、rpad(s1,len,s2)前者返回s1,其左边由字符串s2填补到len字符长度,假如s1的长度⼤于len,则返回值被缩短⾄len字符;前者返回s1,其右边由字符串s2填补到len字符长度,假如s1的长度⼤于len,则返回值被缩短⾄len字符ltrim(s)、rtrim(s)前者返回字符串s,其左边所有空格被删除;后者返回字符串s,其右边所有空格被删除trim(s)返回字符串s删除了两边空格之后的字符串trim(s1 FROM s)删除字符串s两端所有⼦字符串s1,未指定s1的情况下则默认删除空格repeat(s,n) 返回⼀个由重复字符串s组成的字符串,字符串s的数⽬等于nspace(n) 返回⼀个由n个空格组成的字符串replace(s,s1,s2)返回⼀个字符串,⽤字符串s2替代字符串s中所有的字符串s1strcmp(s1,s2)若s1和s2中所有的字符串都相同,则返回0;根据当前分类次序,第⼀个参数⼩于第⼆个则返回-1,其他情况返回1 substring(s,n,len)、MID(s,n,len)两个函数作⽤相同,从字符串s中返回⼀个第n个字符开始、长度为len的字符串,不写长度默认到最后.locate(str1,str)、position(str1 IN str)、instr(str,str1)三个函数作⽤相同,返回⼦字符串str1在字符串str中的开始位置(从第⼏个字符开始)reverse(s) 将字符串s反转elt(N,str1,str2,str3,str4,...)返回第N个字符串⽇期和时间函数CURDATE()、CURRENT_DATE()将当前⽇期按照"YYYY-MM-DD"或者"YYYYMMDD"格式的值返回,具体格式根据函数⽤在字符串或是数字语境中⽽定CURRENT_TIMESTAMP()、LOCALTIME()、NOW()、SYSDATE()这四个函数作⽤相同,返回当前⽇期和时间值,格式为"YYYY_MM-DD HH:MM:SS"或"YYYYMMDDHHMMSS",具体格式根据函数⽤在字符串或数字语境中⽽定MONTH(date)和MONTHNAME(date)前者返回指定⽇期中的⽉份,后者返回指定⽇期中的⽉份的名称WEEK(d)、WEEKOFYEAD(d)前者计算⽇期d是⼀年中的第⼏周,后者计算某⼀天位于⼀年中的第⼏周DAYOFYEAR(d)、DAYOFMONTH(d)前者返回d是⼀年中的第⼏天,后者返回d是⼀⽉中的第⼏天EXTRACT(type FROM date)从⽇期中提取⼀部分,type可以是YEAR、YEAR_MONTH、DAY_HOUR、DAY_MICROSECOND、DAY_MINUTE、DAY_SECONDTimeStampDiff(间隔类型,前⼀个⽇期,后⼀个⽇期)例如距离现在差了多少年:TimeStampDiff(year, 前⼀个⽇期, now())间隔类型有:second秒,minute分,hour时,day天,week周,month⽉,quarter季度,year年DATE_ADD(date,INTERVAL expr type)、ADD_DATE(date,INTERVAL expr type)返回将起始时间加上expr type之后的时间,⽐如DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 SECOND)表⽰的就是把第⼀个时间加1秒条件判断函数IF(expr,v1,v2)如果expr是TRUE则返回v1,否则返回v2IFNULL(v1,v2)函数如果v1的值不为NULL,则返回v1,否则返回v2。
mysql数据库基础命令一、数据库的基本操作大家好!今天咱们聊聊MySQL数据库的基础命令。
MySQL数据库就像是一个聪明的“信息仓库”,你可以在里面存储和管理各种数据,就像是你的一个大脑记事本。
用得好,能让你的工作事半功倍。
今天咱们就从最基础的几个命令开始,让你轻松掌握这个数据库的“基本功”。
1.创建数据库:咱们先从最基本的开始,就是“创建数据库”。
想象一下,如果数据库是你的书架,那创建数据库就是你在书架上放一个新的文件夹。
命令就是这么简单:```sqlCREATEDATABASEdb_name;```其中,`db_name`就是你要给这个数据库起个名字。
命名的时候别太随便,最好是能体现出数据库的用途。
比如你搞个电商系统,数据库名字可以叫`shop_db`,有点意思吧?名字可以随心所欲,但得遵循一定的规则,比如不能有空格、不能用MySQL保留的关键词等等。
创建好了之后,你就有了一个空的“文件夹”,可以开始往里面添加数据了。
2.查看数据库:创建了数据库后,咱们得看看它到底存在不?这就需要用到查看数据库的命令了。
你可以通过`SHOWDATABASES;`来列出所有已经存在的数据库,看看是否有你刚才创建的那个。
就像是翻阅一下自己的书架,确认是不是刚刚买的书已经放进去了。
```sqlSHOWDATABASES;```你会看到一个个数据库的名字,像是《数据库基础》、《MySQL秘籍》这样。
然后你还可以用`USEdb_name;`命令进入你感兴趣的数据库,相当于拿下那本书,开始认真翻看。
```sqlUSEdb_name;```3.删除数据库:假设你创建的数据库不再需要了,怎么处理呢?就像清理书架上的杂物一样,删除一个数据库也是很简单的。
命令就是:```sqlDROPDATABASEdb_name;```记住,这个命令可不是开玩笑的,一旦执行了,你的数据库和其中所有的内容都会一瞬间消失,跟海市蜃楼一样,所以可要三思而后行。
一个网络管理员应该掌握的mysql管理命令
一、数据库基本管理:
1、登陆及退出数据库:
将root密码设置:pwd@123,并在次登陆(使用mysqladmin):
2、显示数据库结构:
查看数据库中的列表信息:
命令格式:SHOW DATABASES;
查看数据库中的数据表信息:
命令格式:SHOW TABLES;
查看mysql中user表对应的文件数据:
显示数据表的结构:
DESCRIBE [数据库名。
]表名;
3、数据库的创建与删除:
创建新的数据库:
命令格式:CREATE DATABASE 数据库名创建一个名为auth的数据库;
这时在/usr/local/mysql/var/下会多出一个auth的目录:
创建新的数据表:
命令格式:CREATE TABLE 表名:
在auth数据库中创建users的表,包括user_name、user_passwd两个字段,均为非空字符串,初始密码为123123,其中user_name字段被设置为关键索引字段(PRIMARY KEY).
当重复创建时会提示已经存在:
删除数据表:
命令格式:DROP TABLE [数据库.]表名
删除数据库auth中的表users:
删除一个数据库:
命令格式:DROP DATABASE 数据库
删除auth数据库:
4、数据录入与维护:
插入新数据记录:
命令格式:INSERT INTO 表名(字段1,字段2,……)V ALUES (字段1,字段2,……)
恢复已经删除的auth数据库和表users:
在auth库下的users表中插入zhangsan、lisi记录,密码为123、321.:
查询数据记录:
命令格式:SELECT 字段1,字段2,……FROM 表名WHERE 条件表达式在auth库的users表中,查看所有的数据记录:
在auth库的users表中,查询用户名为zhangsan的记录,输出用户名和密码字段:
修改数据记录:
命令格式:UPDATE 表名SET 字段名1=字段值1[,字段名2=字段值2,……] WHERE 条件表达式。
将数据库中的用户lisi的密码更改为123456:
更改root管理员的密码,更改完后执行FLUSH PRIVILEGES语句刷新用户授权信息:
删除数据记录:
DELETE FROM 表名WHERE 条件表达式
在auth库的users表中,删除name字段的值为lisi的记录:
为安全起见删除MySQL的空用户:
二、维护数据库(备份与恢复)及用户权限:
1、数据库备份:
MySQL数据库的备份可以使用多种方式,一直是直接备份/var/local/myslq/var 比较快捷,二是使用mysqldump命令备份。
使用mysqldump命令导出的SQL 脚本文件可以再不同版本的MySQL上使用、当升级时可使用。
mysqldump可以完成全部数据库、指定数据库、数据表的备份。
命令格式:mysqldump –u 用户名–p 密码[options] [数据库名] [表名] > /备份路径/备份文件名。
备份整个auth数据库:
备份数据库mysql中的user表、host表:
备份数据库MySQL服务器中的所有数据库内容(添加“--all-databases”)当需要备份的数据较多时可使用‘--opt’选项进行优化,加快备份速度:
2、数据库恢复:
恢复可以直接使用mysql命令导入即可、当然是针对mysqldump导出的sql脚本:
命令格式:mysql –u root –p [数据库名] < /备份路径/备份文件名
备份文件mysql-all.sql包括所有的(或多个)数据库信息时,执行mysql导入时可以不指定数据库名:
备份文件只包含单个数据库或单个数据表时,执行mysql导入时需要指定目标数据库名称:
3、用户权限设置:
数据库授权:
GRANT语句是用来创建用户并授权的最常用的语句,当指定的用户不存在时,GRANT语句将会创建新的用户,否则用于修改用户信息。
命令格式:DRANT 权限列表ON 数据库名。
表名TO 用户名@来源地址[ IDENTIFIED BY ‘密码’]
使用时的注意事项:
权限列表:使用ALL关键字代表全部权限,同时授于多个权限时“,”分割,如:“select,insert,update,delete”。
表名:可使用通配符“*”表示指定数据库中的所有表。
用户名@来源地址:用来设置谁能连接,能从哪里连接。
用户名不能使用通配符,但可以使用两个连续的单引号“‘’”表示空字符,匹配任何用户。
来源地址表示连接数据库的客户机地址,可使用“%”作通配符,匹配某个域内的所有地址(如%@),或使用带掩码标记的网络地址(如192.168.1.0/24)。
IDENTFIED BY:用于设置用户的连接数据库时使用的密码,密码经过加密后存储于mysql库的user表中,省略时新用户的密码将为空。
授权数据库用户scf,允许其从本机连接到MySQL服务器,只能查看mysql库中的user表,使用密码为“123”进行验证;切换到其他终端,使用scf连接数据库、当查看非授权表将被拒绝:
授权admin 1,允许其从本机连接MySQL服务器,对auth库中的所有表具有完全的权限,使用密码“456”验证:
授权admin2,允许其从网段192.168.1.0/24中访问MySQL服务器,可以查询auth库中的所有表,使用“678”进行验证。
授权admin3,允许其从域内的任何主机访问MySQL服务器,对auth 库中的所有表具有SELECT、INSERT权限,使用“321”进行验证。
查看权限:
命令格式:SHOW GRANTS FOR 用户名@域名或IP
查看数据库用户root从服务器本机进行连接时的权限:
查看数据库用户admin3从域内的客户机访问MySQL服务器的权限:
撤销权限:
命令格式:REVOKE 权限列表ON 数据库.表名FROM 用户名@域名或IP 撤销数据库用户admin3从域访问数据库auth的所有权限:。