net start mysql
■在DOS命令行停止MYSQL服务:
net stop mysql
■查看被监听的端口:
netstat –na | findstr 3306
findstr用于查找后面的端口是否存在。
■创建数据库用户:只有根用户(root)才有创建新用户的权限
user_name2 IDENTIFIED BY ‘password’;
一次可以创建多个数据库用户
■删除数据库用户:
DROP USER user_name;
■选择用户:
select user();
■用户的权限控制:
GRANT库,表级的权限控制:将某个库中的某个表的控制权限赋予某个用户
GRANT ALL ON db_name.table_name TO uer_name [indentified by ‘password’];
■查看所有的字符编码:
SHOW CHARACTER SET;
==============================================================================
■登录MySQL数据库: 在DOS命令行登录MYSQL控制台
mysql -u user_name -p(Enter,回车键入密码,若直接输入则为可显)
Enter password:*********
Mysql –h hostname –u user_name –p
Enter password:*********
例:mysql –h 192.168.5.105 –uroot –p
Enter password:*******
■查看运行环境信息:
进入MYSQL命令行工具后 , 使用status;或\s 查看运行环境信息
■创建数据库:
create database db_name;
[default]CHARACTER SET charset_name //设置数据库的编码发方式
[default]COLLATE collation_name ; //设置按collation_name字段排序
//不能写成utf-8,utf8的默认校对为utf8_general_ci(通过show character set查看)
CREATE DATABASE db_name CHARACTER SET utf8 COLLATE utf8_general_ci;
CHARACTER SET:指定数据库采用的字符集
COLLATE:指定数据库字符集的比较方式
■使用数据库:
use db_name;
■显示数据库:
SHOW DATABASES;
■显示数据库创建语句:
SHOW CREATE DATABASE db_name;
■删除数据库:
DROP DATABASE db_name;
删除时可先判断是否存在,写成:DROP DATABASE IF EXISTS db_name;
■查看创建数据库的指令并查看数据库使用的编码:
show create databasedb_name;
■查看数据库编码:
showvariables like ‘char%’;
■查看数据库当前引擎:
SHOW CREATE TABLE table_name;
■修改数据库当前引擎:
ALTER TABLE table_name ENGINE=MYISAM| INNODB;( ‘|’表示‘或者’,选其一)
你能用的数据库引擎取决于mysql在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。
■设置数据库编码:
setcharacter_set_client=gbk;//可以存中文
setcharacter_set_results=gbk;//可以看中文
■备份数据库:
MYSQLDUMP –u用户名(根用户) –p密码 db_name > 存放路径级/文件名(文件格式:.sql)
(不是在mysql控制台执行,而要退出控制台在DOS下执行)
例子:
MYSQLDUMP –u root –p******* mydb > D:/mydb.sql;
■恢复数据库:
前提:要创建一个空数据库
SOURCE 存放路径/文件名.sql (在Mysql控制台执行)
■如何将大量数据存入数据库中的表中:
首先,将数据按表的结构(字段的顺序要对应)存入文本文档中;
然后,某字段若没有值则填入NULL,注意,每个字段值之间用Tab键隔开(/r/n)。
最后,使用命令:LOAD DATA LOCAL INFILE ‘E:/Test/pet.txt’ INTO TABLE pet LINES
TERMINATED BY ‘\r\n’;
Terminate 结束,终止;
■创建表:
1.CREATE TABLE pet (
id int PRIMARY KEY AUTO_INCREMENT ,
name VARCHAR(20) NOT NULL UNIQUE,
owner VARCHAR(20) NOT NULL,
species VARCHAR(20),
sex CHAR(1),
birth DATE ,
);
2.CREATE TABLE table_name(
field1 datatype,
field2 datatype,
……
)CHARACTER SET 字符集 COLLATE 校对规则;
field:指定列名 datatype:指定列类型
■显示表:
show tables;
■显示某个表创建时的全部信息:
SHOW CREATE TABLE table_name;
■显示表的结构信息:
DESCRIBE table_name; 缩写形式 : desc table_name;
■查找数据:
SELECT * FROM table_name;
■显示表的各字段:
DESCRIBE table_name;
■清空表中的数据:
1.TRUNCATE table_name;
此方法会使表中的取号器(ID)从1开始
2.DELETE FROM table_name;
不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。
delete的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。
注意:在MySQL中事务的特殊说明:
1. mysql控制台是默认自动提交事务(dml).
2. 若在控制台使用事务,应该做以下设置:
*SETAUTOCOMMIT=FALSE; //解除自动提交功能
*SAVEPOINT point; //设置保存点point
//一系列操作…
*ROLLBACK TOpoint; //回滚到保存点
使用TRUNCATE table_name删除的表不能够回滚,但删除速度较快,
使用DELETE FROM table_name删除的表可以回滚,删除速度相对较慢。
■创建表:
CREATE TABLE table_name;
■删除表:
DROP TABLE table_name;
■插入数据:
1.INSERT INTO table_name [(字段1,字段2,字段3,…)] VALUES (值1,值2,…);
如果向表中的每个字段都插入一个值,那么前面[]括号内字段名可写也可不写。
2.INSERT INTO pet VALUES('Puffball','Diane','hamster','f','1999-03-30',NULL);
3.从 源表 中筛选符合条件的记录,批量插入到 (指定的)目标表 中:
insert into 目标表(字段1, 字段2,...字段n) select 字段1, 字段2,...字段n from 源表 where 条件
4.向表中插入条数据:
insert into articles (id, content,userid)
values (2,’hahaha’,11),(null,’xixixi’,10),(13,’aiaiai’,1),…;
■删除数据:
DELETE FROM table_name WHERE id=’10’;
delete语句不能删除某一列的值,可使用update更新列值。
使用delete语句仅删除记录,不删除表本身,删除表使用drop table语句。
■更新数据:
UPDATE pet SET birth = '1989-08-31'WHERE name = 'Bowser' ORDER BY birth DESC;
ASC(升序,默认方式);DESC(降序)
WHERE 和 ORDER 语句也可用于查询select 与 删除delete
■查询数据:
1.SELECT * FROM pet WHERE name = 'Bowser';
SELECT * FROM pet WHERE birth > '1998-1-1';
SELECT * FROM pet WHERE species = 'dog' AND sex ='f';
SELECT * FROM pet WHERE species = 'snake' OR species= 'bird';
SELECT * FROM pet WHERE (species = 'cat' AND sex ='m')
OR(species = 'dog' AND sex = 'f');
SELECT name, birth FROM pet;
SELECT chinese+english+math FROM Students; //列之间可以进行运算
2.增加关键字DISTINCT检索出每个唯一的输出记录,把相同的记录值取其中一个即可。
SELECT DISTINCT owner FROM pet; //distinct [dɪ'stɪŋkt] 截然不同的
3.使用一个WHERE子句结合行选择与列选择:
SELECT name, species, birth FROM pet
WHEREspecies = 'dog' OR species = 'cat';
4.为了排序结果,使用ORDER BY子句:
SELECT name, birth FROM pet WHERE species = 'dog' ORDERBY birth;
默认排序是升序,最小的值在第一。要想以降序排序,在你正在排序的列名上增加DESC(降
序)关键字:
SELECT name, birth FROM pet ORDER BY birth DESC;
5.可以对多个列进行排序,并且可以按不同的方向对不同的列进行排序:
SELECT name, species, birth FROM pet
ORDER BY species, birth DESC;
注意DESC关键字仅适用于在它前面的列名(birth);不影响species列的排列顺序。
6.MySQL提供了几个函数,可以用来计算日期,例如,计算年龄或提取日期部分:
SELECT name, birth, CURDATE(),((YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(),5)<RIGHT(CURDATE(),5)) AS age FROM pet;
YEAR()提取日期的年部分,RIGHT()提取日期的MM-DD (日历年)部分的最右面5个字符。比较MM-DD值的表达式部分的值一般为1或0,若birth月份比当前月份大,则年份应减去1。
SELECT name, birth, death FROM pet WHERE death ISNOT NULL ORDER BY birth;
使用deathIS NOT NULL而非death != NULL,因为NULL是特殊的值,不能使用普通比较符来比较。
7.MySQL提供几个日期部分的提取函数,例如YEAR( )、MONTH( )和DAYOFMONTH()。
SELECT name, birth, MONTH(birth) FROM pet;
SELECT name, birth FROM pet WHEREMONTH(birth) = 5;
概念上,NULL意味着“没有值”或“未知值”,且它被看作与众不同的值。不能使用算术比较操作符例如=、<或!=。
请注意在MySQL中,0或NULL意味着假而其它意味着真。布尔运算的默认值是1.
8.同表查询:
SELECTa.id,a.nikename,a.address FROM users a,users b WHERE b.nikename=’haha’
anda.id>b.id;
也可写成
SELECT id,nikename,addressFROM users WHERE id>(SELECT id FROM users WHERE nikename=’haha’);
补充:在WHERE子句中经常使用的运算符
注:LIKE语句中,%代表零个或多个任意字符,_代表一个字符,例firstname like ‘_a%’;
9.使用GROUP BY子句对列进行分组:
SELECTcolumn1,column2,column3… FROM table_name GROUP BY column;
SELECTproduct,sum(price) FROM orders GROUP BY product;
10.使用HAVING 子句过滤:
SELECT column1,column2,column3…FROMtable_name GROUP BY column HAVING…
SELECTproduct,sum(price) FROM orders GROUP BY product HAVING sum(price)>100;
HAVING和WHERE均可实现过滤,但在HAVING可以使用合计函数,HAVING通常跟在GROUP BY后,它作用于组。
…GROUP BY …HAVING…ORDERBY…
■对表进行重命名:
1.RENAME TABLE table_name TO new_name;
2.ALTER TABLE table_name RENAME TO new_table_name;
■ 修改表结构:增加字段
1.增加一个字段
ALTER TABLE table_name ADD COLUMN(字段名 字段类型);---此方法带括号
2.增加一个字段在指定的位置
ALTER TABLE table_name ADDCOLUMN 字段名 字段类型 AFTER 某字段;
■ 修改表结构:删除字段
ALTER TABLE table_name drop 字段名;
■修改表结构:改变字段名称/类型:
ALTER TABLE table_name CHANGE COLUMN field_namenewfield_name varchar(10) not null;
其中char(20) notnull是newcolumn_name字段的create_definition.
■增加约束:约束(主键Primary Key、唯一性Unique、非空Not NULL)
1.ALTER TABLE table_name CHANGE old_id new_id INT(16) NOT NULL PRIMARY KEY;
2.自动增长:
ALTER TABLE table_name CHANGE old_id new_id INT(16) NOT NULL AUTO_INCREMENT;
■修改表的字符集:
ALTER TABLE table_name CHARACTER SET UTF8;
■ 查看某字段使用的编码:
SELECTCHARSET(column_name) FROM table_name;
==============================================================================
插入数据库是出现乱码的参考解决方案:
1。 数据库字符集设置为GB2312。(但就是插不成功显示Datato lang 吧!)
2。关键在创建表的时候:
create table (字段) Default character set gb2312;
3。表创建好的情况下:
修改表编码: alter table 表名 Default character set gb2312;
修改字段编码: ALTERTABLE 表名 CHANGE COLUMN 字段名CHARACTER SET gb2312;
mysql show:
a. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称
b. show databases; -- 显示mysql中所有数据库的名称
c. show columns from table_name from database_name; 或show columns from database_name.table_name; -- 显示表中列名称
d. show grants for user_name; -- 显示一个用户的权限,显示结果类似于grant 命令
e. show index from table_name; -- 显示表的索引
f. show status; -- 显示一些系统特定资源的信息,例如,正在运行的线程数量
g. show variables; -- 显示系统变量的名称和值
h. show processlist; -- 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
i. show table status; -- 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间
j. show privileges; -- 显示服务器所支持的不同权限
k. show create database database_name; -- 显示create database 语句是否能够创建指定的数据库
l. show create table table_name; -- 显示create database 语句是否能够创建指定的数据库
m. show engies; -- 显示安装以后可用的存储引擎和默认引擎。
n. show innodb status; -- 显示innoDB存储引擎的状态
o. show logs; -- 显示BDB存储引擎的日志
p. show warnings; -- 显示最后一个执行的语句所产生的错误、警告和通知
q. show errors; -- 只显示最后一个执行语句所产生的错误
r. show [storage] engines; --显示安装后的可用存储引擎和默认引擎
s. show procedure status --显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过
程名称,创建时间等
t. show create procedure sp_name --显示某一个存储过程的详细信息
一下午研究了两个内容:触发器与过程.
触发器是在执行某种操作(插入,更新,删除)时(前,后)进行的操作. 这个功能完全可以由C语言实现,而且更简单. mysql中触发器的使用还要涉及到变量之类的,不如用C实现起来简单,所以这里就不介绍了.
过程(procedure)相当于C语言中的子函数:
1,创建:
create procedure procedure_name() select * from table_name;
2,调用:
call procedure_name;
3,查看:
查看过程的内容有三种方法:
1,show create procedure procedure_name;
2,show procedure status like 'procedure_name'
3,select * from mysql.proc where name='procedure_name'
4,删除:
drop procedure procedure_name;
一些存储过程以及函数的例子
定义procedure
create procedure p2_test1 (OUT para1 int)
begin
select sum(val) into para1 from test1;
end
|
调用procedure
call p2_test1(@sum)|
select @sum|
alter procedure没有研究出来
定义函数
create function f_test1(name char(20)) returns char(20) //参数没有IN,OUT,都是IN
begin
return concat('Hello ',name,' !');
end
|
调用函数
select f_test1('hongjian')|
三种不同的show的用法
show procedure status
show function status
show triggers //注意,没有status
语法:
CREATE PROCEDURE sp_name ([IN |OUT |INOUT] param type,...)
begin
rou
-- 执行结果如下
general_log, OFF
general_log_file, /usr/local/mysql/var/ldap-mysql-svn-trac.log
相关推荐
MySQL Notes.sql
《MySQL Notes for Professionals》。这本书是有Stack Overflow编写的,在2018年出版,是一本相对较新的开源书籍,文本内容在Creative Commons BY-SA下发布。
MySQL 8.0 Release Notes 提供了 MySQL 8.0 系列自初始版本至 MySQL 8.0.37 版本的所有变更详情。这份文档是 MySQL 8.0 用户升级、了解新功能以及解决潜在问题的重要参考资源。 #### MySQL 8.0 新特性概览 在 ...
根据提供的文件信息,我们可以归纳出一系列关于MySQL的专业知识点。这些知识点涵盖了从入门到高级操作的各种技巧,对于希望深入了解MySQL数据库管理系统的专业人士来说非常有价值。以下是对各章节内容的详细总结: ...
MySQL.goodnotes
Lotus Notes是一款强大的企业级协作应用软件,而SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言。在标题和描述中提到的“Notes SQL 8.5.1”是IBM提供的一款工具,它允许开发者通过ODBC...
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并...
For information about which versions have been released, see the MySQL 8.0 Release Notes. MySQL Cluster is currently not supported in MySQL 8.0. For information about MySQL Cluster, please see MySQL...
For notes detailing the changes in each release, see the MySQL 8.0 Release Notes. For legal information, including licensing information, see the Preface and Legal Notices. For help with using MySQL, ...
For information about which versions have been released, see the MySQL 5.6 Release Notes. MySQL 5.6 features. This manual describes features that are not included in every edition of MySQL 5.6; ...
2.4.1. General Notes on Installing MySQL on Mac OS X 2.4.2. Installing MySQL on Mac OS X Using Native Packages 2.4.3. Installing the MySQL Startup Item 2.4.4. Installing and Using the MySQL Preference...
For information about which versions have been released, see the MySQL 8.0 Release Notes. MySQL Cluster is currently not supported in MySQL 8.0. For information about MySQL Cluster, please see MySQL...
- **Release Notes**: 详细记录了每个版本的具体更改内容。 - **Legal Notices**: 提供了相关的法律声明。 #### 三、核心功能与组件 ##### 3.1 MySQL Enterprise Edition - **功能**: 高级安全、备份、性能监控等...
For information about which versions have been released, see the MySQL 5.6 Release Notes. MySQL 5.6 features. This manual describes features that are not included in every edition of MySQL 5.6; ...
4. `changes` 或 `RELEASE NOTES`:记录了版本间的变更和改进,对于开发者来说,这些信息可以帮助了解新版本引入的功能和修复的问题。 5. `README.mysql` 或类似文件:可能提供了针对MySQL服务器特定的使用指南和...
在升级前,需要查阅官方的发行说明(如MySQL的Release Notes),了解具体变更,以便做好准备。 **7. 测试与恢复** 在生产环境升级前,建议在测试环境中进行预升级操作,确保所有应用和功能正常工作。升级完成后,还...
For information about which versions have been released, see the MySQL 8.0 Release Notes. MySQL Cluster is currently not supported in MySQL 8.0. For infor mation about MySQL Cluster, please see MySQL...
- **MySQL 5.7 发行说明**(MySQL 5.7 Release Notes):记录了每个发行版本的变化和修复的错误。 - **法律声明**(Legal Notices):包含了与使用 MySQL 相关的法律条款和声明。 通过以上内容,读者可以了解到 ...
For information about which versions have been released, see the MySQL 5.7 Release Notes. MySQL 5.7 features. This manual describes features that are not included in every edition of MySQL 5.7; ...
- "Release Notes.txt"通常包含了版本发布的主要特性、改进和已知问题,是了解软件当前状态的重要参考。 - "Documentation"可能是一个目录,包含了插件的完整文档,指导开发者如何配置和使用MySQL for Visual Studio...