mysql启动:net start mysql
mysql关闭:net stop mysql
命令行进入mysql数据库:mysql -h localhost -u 数据库登录名
mysql 修改root密码:
方法1: 用SET PASSWORD命令
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法2:用mysqladmin
进入mysql/bin下
mysqladmin -u root -p password "newpass"
方法三:
mysql> UPDATE mysql.user SET Password=PASSWORD('newpass')
-> WHERE User='bob' AND Host='%.loc.gov';
mysql> FLUSH PRIVILEGES;
mysql数据库密码丢失:
1. KILL掉系统里的MySQL进程;
2. 在命令提示符下(CMD),进入到MYSQL的BIN目录,用以下命令启动MySQL,以不检查权限的方式启动;
mysqld-nt --skip-grant-tables
3. 然后重新开打一个命令提示符的窗口(CMD)用空密码方式使用root用户登录MySQL;
mysql -u root -p
4. 修改root用户的密码;
mysql> update mysql.user set password=PASSWORD('新密码') where User='root';
mysql> flush privileges;
mysql> quit
查看数据库信息: show databases
连接一个数据库:use 数据库名
创建一个数据库:create database 数据库名
删除一个数据库:drop database 数据库名
查看数据库中的表:show talbes
创建一个表:create table 表名(
column_name column_type [null | not null ] [default default_value] [auto_increment] [primary key]
);
其中[]中内容是可选项 column_name 列名 column_type列的类型
查看创建表结构:show create table 表名
DESCRIBE语法(获取有关列的信息):describe table_name
复制表结构:create table table_new like table_old
对一个或多个表的重命名:rename table to new_table
表的修改:alter table table_name
[ add column_name_defination [ first | after column_name]],
[ change old_column_defination [first |after column_name]],
[ drop old_column_name],
[ drop primary key];
如:alter table mytalbe
-->add id int(5) primary key first,
-->change name username char(20) not null after password,
-->drop age,
-->;
表的查询:
select [ all |distinct ] column_name
from table_name
where condition
group by column_name
having condition
order by column_name [ asc |desc ]
limit [ offset , row_count];
condition 指查询条件,group by实现最结果分组
having 后面的condition仍然指代查询条件,
asc和desc是排序方法,asc指正序排列,desc指倒叙排列
offset表示显示的起始行,row_count表示要显示的行数
select语句是SQL语句最复杂的一种类型,其中where语句是select中最重要的部分.where语句主要包含以下几中类型
(1)比较运算:
= 检查是否相等
!= 检查是否不等
> (或>=) 检查左边值是否大于(或大于等于)右边值
< (或<=) 检查左边值是否小于(或小于等于)右边值
[not] between 检查左边值是否在某个范围内
(2)like匹配:
这里有两种可用的通配符:"_"和"%"
"_"表示匹配一个字符,"%"表示匹配一个或多个字符
(3)IN操作符:
用来表示指定列的值必须在枚举的几项中.例如:where column_name in(1,2,3)表示colmn_name的值必须在1,2,3中的记录才能被选出来.不在指定列的值用:Not In
(4)Exist和Not Exist操作符:
在两个表中联合查询:
例如:select a.name,b.age from mytable1 a,mytable2 b;
或者:select a.name,b.age from mytable1 as a,mytable2 as b;
使用join语句:
INNER JOIN
内连接会返回两个表中所匹配的所有的行。假如 Employees 中的某些行与 Orders 中的行不匹配,那些行就不会被列出来。
SELECT 字段1, 字段2, 字段3
FROM 第一个表
INNER JOIN 第二个表
ON 第一个表.keyfield = 第二个表.foreign_keyfield
LEFT JOIN语句
左连接会从第一个表 (Employees) 那里返回所有的行,即使在第二个表 (Orders) 中没有匹配的行。假如 Employees 中的某些行没有在 Orders 中可匹配的行,这些行也会被列出来。
SELECT field1, field2, field3
FROM first_table
LEFT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield
RIGHT JOIN
右连接会从第二个表格 (Orders) 那里返回所有的行,即使在第一个表格中没有可匹配的行。假如 Orders 中的某些行没有在 Employees 可匹配的行,那些行也会被列出。
SELECT field1, field2, field3
FROM first_table
RIGHT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield
union和union all用法
UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
修改表中数据
数据添加:insert [into] table_name (column_name,...) values (values,...)
例如:例: mysql>insert into mydatabase(name,password,age) values ('php','111111','60'');
数据更新:update table_name set column_name=values [where...]
数据删除:delete from table_name [where...]
http://www.w3school.com.cn/sql/sql_join.asp