MYSQL基础语法

MySQL

l MySQL 安装配置

卸载

在mysql安装目录 my.ini

datadir="C:/Documentsand Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/"

1) 在控制面板中卸载MySQL

2) 删除mysql 安装目录

3) 删除MySQL数据文件目录


重置密码

方法一:

在my.ini的[mysqld]字段加入:

skip-grant-tables

重启mysql服务,这时的mysql不需要密码即可登录数据库

然后进入mysql

mysql>use mysql;

mysql>update user set password=password('新密码') WHERE User='root';

mysql>flush privileges;

运行之后最后去掉my.ini中的skip-grant-tables,重启mysqld即可。

方法二:

不使用修改my.ini重启服务的方法,通过非服务方式加skip-grant-tables运行mysql来修改mysql密码

1) 停止mysql服务器 运行输入services.msc 停止mysql服务

2) 在cmd下 输入 mysqld --skip-grant-tables 启动服务器 光标不动 (不要关闭该窗口

3) 新打开cmd 输入mysql -u root -p 不需要密码

use mysql;

update user set password=password('abc') WHERE User='root';

4) 关闭两个cmd窗口 在任务管理器结束mysqld 进程

5) 在服务管理页面 重启mysql 服务

密码修改完成



l MySQL存储结构

spacer.gif



l MySQL数据库的备份与恢复

备份命令 mysql/bin/mysqldump 将数据库SQL语句导出

语法:mysqldump -u 用户名 -p 数据库名 > 磁盘SQL文件路径


例如: 备份day12数据库 --- c:\day12.sql

cmd > mysqldump -u root -p day12 > c:\day12.sql 回车输入密码

注意:不是在mysql窗口下输入,而是在cmd下输入命令

恢复命令 mysql/bin/mysql 将sql文件导入到数据库

语法: mysql -u 用户名 -p 数据库名 < 磁盘SQL文件路径

***** 导入SQL 必须手动创建数据库 ,SQL不会创建数据库

例如:将c:\day12.sql 导入 day12数据库

cmd > mysql -u root -p day12 < c:\day12.sql 回车密码

补充知识:恢复SQL也可以在数据库内部执行 source c:\day12.sql



l 多表设计原则 :所有关系数据只能存在三种对应关系 (一对一、一对多、多对多)

多对多关系 : 雇员和项目关系

一个雇员可以参与多个项目

一个项目可以由多个雇员参与

建表原则:必须创建第三张关系表,在关系表中引用两个实体主键 作为外键

关系表中每条记录,代表一个雇员参与了一个项目


一对多关系: 用户和博客关系

一个用户可以发表多篇博客

一个博客只能由一个作者


建表原则:不需要创建第三方关系表,只需要在多方添加 一方主键作为 外键

一对一关系 : 这种关系很少见到  负责人和工作室

一个负责人 管理一个工作室

一个工作室 只有一个负责人

建表规则:在任一方添加对方主键 作为外键



l 多表查询――笛卡尔积

将A表中每条记录 与 B表中每条记录进行 匹配 获得笛卡尔积

select * from emp;

select * from dept;

select * from emp,dept; 显示结果就是笛卡尔积

笛卡尔积结果就是两个表记录乘积 例如A 表3条 B表4条 ---- 笛卡尔积 12条

笛卡尔积结果是无效的,必须从笛卡尔积中选取有效的数据结果 !!!

内连接

select * from a,b where a.a_id = b.a_id;

* 内连接查询结果条数 一定小于 两个表记录较少哪个表 ----- 例如 A表3条 B表5条 ---- 内连接结果条数 <= 3



l 数据库完整性约束

primary key 主键、unique 唯一、not null非空 、foreign key 外键、check 条件约束(mysql不支持,oracle中使用)


MySQL语法

数据库启动和关闭。

* cmd > net start mysql

* cmd > net stop mysql


* 显示当前数据库服务器中的数据库列表

* mysql> show databases;

* 使用数据库

* mysql> use 库名;## 注意:只有在命令创建时,才需要手动使用数据库

* 显示当前数据库中的数据表

* mysql>show tables;

* 显示当前所使用的数据库名称

* mysql> select database();

* 显示当前数据库的状态

* mysql> status;

* 显示当前数据库中某表的表结构 (DESCRIBE(describe)

* mysql> desc user;

* 显示所支持的字符集

* mysql > show character set;

mysql -uroot -pasa 登陆mysql

Show databases; 展示数据库

Use database_name; 打开指定数据库

Show tables; 显示数据库里面的表

select * from table_name 查询表的内容



字段:

* 添加字段:mysql > alter table 表名 add column 字段描述;

* 删除字段:mysql > alter table 表名 drop column 字段名称;


DDL数据定义语言

Create database database_name; 添加数据库

Drop database database_name;删除数据库


Create table table_name(

Id int,

Name varchar(32)

);

创建表,前几行再后面加单引号,定义最后一行属性不需要加任何符号,最后结尾处加“ ; ”。


Drop table table_name;   移除表

DML数据操作语言

Insert

Insert into table_name(属性1,属性2,属性。。。) values('  ', '  ', '  ' );

spacer.gif

Update

Update table_name set 属性=123 where id=XXX;

spacer.gif


Delete

Delete from table_name; 清空整个表的内容,但是保留表名。

spacer.gif


DQL数据查询语言


Select 查询的内容 from where 条件 group by XX分组 having 分组的条件 order by desc,asc 排序。


mysql> select age from users order by age asc;   按照年龄排序

mysql> select distinct age from users order by age asc;# 去重复


Group by 应用:

mysql> select classes ,sum(count)/count(id) as classAvg from users group by classes having classAvg <60;


中文乱码问题

Show create table table_name 显示创建表的编码情况。

Show variables like '%char%' 显示数据库编码环境变量

解决方法:预先设置 set names gbk;


SQL约束

主键约束:

Id int primary key auto_increment 自动增长列

constraint primary key(字段名称)

alter table 表名 add constraint primary key(字段1,字段2,...);


还有外键约束,没时间一步步的敲,待结束完JDBC再继续整理。脑地不给力,容易忘


你可能感兴趣的:(mysql,基础语法)