数据定义语言:即数据库定义语句,用来创建数据库中的表、索引、视图、存储过程、触发器等,常用的语句关键字有:CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME。
关于数据库语言分类参考下图:
*注意:CMD命令行使用mysql命令首先需要配置系统的环境变量。具体怎么配置自行百度:(就是把你安装的mysql.exe的安装路径添加到系统的环境变量Path中去)。
1.查看当前服务器下全部数据库 :SHOW DATABASES|SCHEMAS;
show databases; //数据库命令以分号结束
+--------------------+
| Database |
+--------------------+
| information_schema |
| learngit |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
2.查看指定数据库的详细信息:SHOW CREATE DATABASE db_name;
show create database phpcn1; //命令语句
执行结果
*注意:这条命令和查看数据库命令的区别:database与databases;仅差一个字母S注意不要写错!!!
3.切换数据库:USE db_name;
use mysql; //切换sql命令
No connection. Trying to reconnect... //切换结果
Connection id: 7
Current database: *** NONE ***
4.创建数据库 :
CREATE {DATABASE|SCHEMA} db_name;
检测数据库是否存在,不存在则创建
create database if not exists 数据库名
注意:
a.数据库名称最好有意义
b.名称不要包含特殊字符或者是MySQL关键字create database if not exists phpcn;
创建成功提示:Query OK, 1 row affected (0.00 sec)
5.删除数据库 DROP DATABASE db_name;
如果数据库存在则删除
drop databasae if exists db_name;
mysql> drop database phpcn2; //删除命令
Query OK, 0 rows affected (0.00 sec) //结果
6.修改指定数据库的编码方式ALTER DATABASE db_name [DEFAULT] CHARACTER SET [=] charset;
mysql> alter database phpcn character set gbk;
Query OK, 1 row affected (0.00 sec)
7.得到当前打开的数据库:SELECT DATABASE()|SCHEMA();
mysql> select database();
+------------+
| database() |
+------------+
| phpcn1 |
+------------+
1 row in set (0.00 sec)
即数据操纵语句,用来查询、添加、更新、删除等,常用的语句关键字有:SELECT,INSERT,UPDATE,DELETE,MERGE,CALL,EXPLAIN PLAN,LOCK TABLE,包括通用性的增删改查。
1.创建表
CREATE TABLE [IF NOT EXISTS] tbl_name(
字段名称 字段类型 [完整性约束条件],
字段名称 字段类型 [完整性约束条件],
...
)ENGINE=存储引擎 CHARSET=编码方式;
Eg: mysql> CREATE TABLE `users` (
-> `id` int(10) NOT NULL,
-> `name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
-> `password` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
-> PRIMARY KEY (`id`)
-> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Query OK, 0 rows affected (0.06 sec)
2.查看当前数据库存在的表:show tables
Eg:
mysql> show tables;
+------------------+
| Tables_in_phpcn1 |
+------------------+
| users |
+------------------+
1 row in set (0.00 sec)
3.查看指定数据表的详细信息SHOW CREATE TABLE tbl_name;
mysql> show create table users
-> ;
+-------+-------------------------+
| Table | Create Table
+-------+------------------------------------+
| users | CREATE TABLE `users` (
`id` int(10) NOT NULL,
`name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`password` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
4.查看表结构
DESC tbl_name;
DESCRIBE tbl_name;
DESCRIBE tbl_name;
5.删除指定的数据表DROP TABLE [IF EXISTS] tbl_name;
6.表结构相关操作
(1).添加字段ALTER TABLE tbl_name
ADD 字段名称 字段属性 [完整性约束条件] [FIRST|AFTER 字段名称]
mysql> alter table users add gender varchar(20);
Query OK, 0 rows affected (0.45 sec)
Records: 0 Duplicates: 0 Warnings: 0
(2).删除字段: ALTER TABLE tbl_name
DROP 字段名称
mysql> alter table users drop gender ;
Query OK, 0 rows affected (0.45 sec)
Records: 0 Duplicates: 0 Warnings: 0
(3).添加默认值:ALTER TABLE tbl_name
ALTER 字段名称 SET DEFAULT 默认值;
(4).删除默认值:ALTER TABLE tbl_name
ALTER 字段名称 DROP DEFAULT
(5).修改字段类型、字段属性ALTER TABLE tbl_name
MODIFY 字段名称 字段类型 [字段属性] [FIRST | AFTER 字段名称]
(6).修改字段名称、字段类型、字段属性ALTER TABLE tbl_name
CHANGE 原字段名称 新字段名称 字段类型 字段属性 [FIRST | AFTER 字段名称]
(7).添加主键ALTER TABLE tbl_name ADD PRIMARY KEY(字段名称)
(8).删除主键:ALTER TABLE tbl_name DROP PRIMARY KEY;
(9).添加唯一:ALTER TABLE tbl_name
ADD UNIQUE KEY|INDEX [index_name] (字段名称)
(10).删除唯一:ALTER TABLE tbl_name DROP index_name;
(11).修改数据表名称:ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name
RENAME TABLE tbl_name TO new_tbl_name;
(12).修改AUTO_INCREMENT的值ALTER TABLE tbl_name AUTO_INCREMENT=值
7.查看生成表的sql语句:show create table student;
8.插入数据
insert into 表名 (字段1, 字段2, 字段3…) values(值1, 值2, 值3…);
insert into 表名 values(值1, 值2, 值3…..); //此方法必须插入表中所有字段的值,并一一对应;
insert into 表名 values(值1, 值2, 值3…), (值1, 值2, 值3…),…(值1, 值2, 值3…); //此方法可以插入多条数据
9.update 更新,修改数据;
update 表名 set 字段名=新的值 (where 条件); //不加条件会修改所有指定字段的值,可以通过where确定修改指定记录
2.delete 删除数据;
delete from 表名 (where 条件); //此方法删除数据在不加条件时会删除所有的数据,可以通过where确定删除指定记录
truncate table table_name同样可以实现清除表中所有的数据,
虽然TRUNCATE和DELETE都可以删除表的所有记录,但有原理不同。DELETE的效率没有TRUNCATE高!
TRUNCATE其实属性DDL语句,因为它是先DROP TABLE,再CREATE TABLE。而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的(回滚是事务的知识!)。
namespace app\admin\controller;
class Index{
public function index(){
return __METHOD__;
}
}
namespace extend\lib;
//.use 导入命名空间
use app\admin\controller; // 正常引用
echo (new controller\index) ->index();
echo "<hr>";
//use引用 as定义别名
/*成功导入命名空间以后 就可以不使用类的完全限定名称 来调用类元素*/
use app\admin\controller as test;
echo (new test\Index)->index();
echo "<hr>";
//引用空间中的类 并定义别名
use app\admin\controller\Index as test2;
echo (new test2)->index();
2.实现自动加载带有命名空间的类
demo.php 中代码
namespace app;
// 引入类的自动加载器 只是加载类文件
require 'app/admin/autoload.php';
// 起别名
use app\admin\controller\Login;
use app\admin\controller\User;
use app\admin\model\Login as LoginModel;
use app\admin\model\User as UserModel;
$loginController = new Login;
$loginModel = new LoginModel;
$UserModel = new UserModel;
$userController = new User;
echo $userController->index();
autoload.php 自动加载类文件
spl_autoload_register(function($className){
// 先检查要加载的类
// echo $className.'<hr>';
// 将类的命名空间与类文件所在的路径保持一一映射
$file = str_replace('\\',DIRECTORY_SEPARATOR,$className).'.php';
// echo $file;
if(!(is_file($file) && file_exists($file)))
{
throw new \Exception('文件名不合法或者不存在');
}
// require $file;
require $className.'.php';
});